matematykaszkolna.pl
Trivial ^Bartek^: Trivial mam pytanie. Chciałbym napisać program który pobierałby określone informacje ze strony internetowej. np wszystko co jest między <li></li>. Mógłbyś mi powiedzieć jak się to nazywa? Chodzi mi o to ,że nie wiem jak mam znaleźć informacje na temat takich programów. Innymi słowy Co wpisać w google ?emotka Resztę już zrozumie. Proszę o odpowiedź.
1 sty 22:37
Kejt: może wyrażeniami regularnymi? (tak wiem, nie jestem Trivial )
1 sty 22:54
^Bartek^: Wielki dzięki Kejt za odpowiedź, nie wiedziałem że są tutaj jeszcze inni informatycy . emotka Tak o to mi chodziło. to pozwala mi na wyciąganie tych rzeczy ze wczytanej strony. Tylko jak do niej przejść ? Załóżmy ,że strona wykorzystuje metodę GET. Wystarczy tylko ,że mamy wzór i będziemy do niego podstawiać. np. asdf.com/sss/aaa/TUTAJ/strona−1 potem asdf.com/sss/aaa/TUTAJ/strona−2 tak?
1 sty 23:28
Kejt: w sumie w ostatnim czasie siedziałam głównie w c++ nie w phpie, więc trochę nie moja działka ale powiedz mi, co dokładnie chcesz tym robić.. wydobywać treść spomiędzy stałych znaczników?
1 sty 23:33
^Bartek^: Dużo Ci nie powiem Tak chodzi o pobieranie treści spomiędzy stałych znaczników. Dążę do zrealizowania mojego pomysłu na stronę służącą do... hmm każde linijka zakończona jest enterem : <br> dzięki temu będę mógł określać ilość wierszy w każdym pobranym znaczniku i segregować wyniki.
1 sty 23:58
Kejt: no dobra.. w miarę rozumiem.. a do pliku, czy ma zostawać w bazie? dziś Ci już pewnie nie odpowiem, bo po Sylwestrze jeszcze trochę nieprzytomna jestem, ale jak jutro nie zapomnę to coś pomyślę btw. bardzo to tajemnicze
2 sty 00:04
Kejt: o, jest i Trivial
2 sty 00:04
^Bartek^: Dane będą przechowywane w mySQL . Mam nadzieje ,że nie zapomnisz emotka Bez Ciebie nie wiedziałbym od czego zacząć. emotka
2 sty 00:15
asdf: Witam, też nie jestem Trivial, ale spróbuję pomóc emotka Możesz skorzystać z wyrażeń regularnym (fajnie wytlumaczone tutaj: http://cpp0x.pl/artykuly/?id=47 ) jeżeli założysz, że dobrze są dane oraz lista nie jest zagniezdzona, dwie zmienne: bool startLi, endLi = false; jezeli napotkasz na <li>, dajesz startLi na true, do puki nie napotkasz na </li> trzymasz startLi na true, w tym czasie, jezeli jest aktywne − dodajesz to wszystko do jednego stringa / rekordu...co tam chcesz.jezeli napotkasz na </li> ustawiasz startLi na false, endLi na true. mozesz tez rzucic wyjatkiem, tzn. jezeli skonczysz wczytywac dane (koniec pliku lub cokolwiek tam chcesz...) i jezeli endLi == false && startLi == true to z informacja, ze cos jest nie dokonczone, lub po prostu nie rzucasz wyjatku, tylko do NIEdokonczonego stringa dodajesz '\0' i tyle emotka Tak na szybkiego − nie wiem czy są bledy, nie testowalem. Jak zalezy Ci na dobrym kodzie to polecam ogarnięcie biblioteki iostream (jezeli zapisujesz do pliku w C++), na internecie jest pelno dokumentacji na ten temat zapewne, a jezeli masz symfonie C++ Pana Grębosza to marsz do niej − ostatni rozdział drugiego tomu emotka
2 sty 02:33
asdf: dopiero doczytalem, ze to w PHP ma być, moze sie przyda: http://pl1.php.net/fread P.S wyrazenia regularne − mega fajna rzecz, można się dobrze w tym pobawic, ale na przyszlosc: jezeli tworzysz strony internetowe, jakies logowanie czy cos, to nie ograniczaj sie tylko do tego, tylko parsuj "czyms jeszcze" lub korzystaj z dobrze ogarniętych wyrazen regularnych bo z maaaaaalutkiego doswiadczenia wiem, ze znalezienie wyjątku ( tzn. zlamania zalozenia wyrazenia regularnego ) jest bardzo proste ( nie latwo jest wszystkie przypadki wylapac )
2 sty 02:39
asdf: no i moze sie przyda do wczytywania kolejnych znakow: http://pl.php.net/manual/pl/function.fgetc.php a do laczenia do innego stringa, tzn: += chyba w php jest uzywana kropka, ale nie jestem pewien, wygogluj
2 sty 02:42
asdf: "hmm każde linijka zakończona jest enterem : <br> dzięki temu będę mógł określać ilość wierszy w każdym pobranym znaczniku i segregować wyniki." tutaj już może się przydać polecenie z basha ( system UNIX ), tzn: wc − l ( albo jakis podobny parametr ) − liczy ilość wierszy występujących w pliku wtedy nie musisz patrzec do kodu źródłowego tylko a jezeli chcesz wiedziec tylko ile jest tych "wierszy" za pomoca PHP to licznik daj: int cout = 0; if( znalazles wyrazenie </li> ) count +=1;
2 sty 04:04
Dominik: http://pastebin.com/3w1ABRGb na szybko napisane. nie sprecyzowales, bartku, jaki jezyk, wiec polecam ci pythona. emotka w liscie li masz napisy pomiedzy <li>, a </li>, niezaleznie od ilosci wystapien. w przypadku list zagniezdzonych, skrypt wyciagnie zawartosc najbardziej zewnetrznej, a wewnetrzne pozostawi bez zmian.
2 sty 11:36
Dominik: ach, niepotrzebnie jest HTMLParser importowany. poza tym, wszystko dziala.
2 sty 11:42
asdf: w bashu to jakieś 4 linijki kodu (tylko juz inne srodowisko..jak nie masz UNIXa to dupaemotka ), jak Bartek będziesz chciał z tego skorzystać to Ci napisze tego skrypta
2 sty 14:51
^Bartek^: Zaskoczyliście mnie ! Dziękuję wszystkim za odpowiedź.emotka Muszę to wszystko przeanalizować. Odniosę się do tego co napisaliście później. Dzisiaj nie wiem czy będę miał czas. Ostatnio trochę czasu spędzam nad symulatorem fizyki,ale zamierzam skupić się nad tym /\ projektem .
2 sty 18:33
^Bartek^: from HTMLParser import HTMLParser import urlib2 class MyHTMLParser(HTMLParser): def handlestarttag(self, tag, attrs): print "Poczatek %s" % tag def handleendtag(self, tag): print "Koniec %s tag" % tag def handledata(self, data): print "Dane %s" % data p = MyHTMLParser() f = urllib2.urlopen('http://wikipedia.com') html = f.read() p.feed(html) print p.data p.close()
3 sty 14:55
^Bartek^: Może mi ktoś pomóc ?
3 sty 14:56
3 sty 15:00
^Bartek^: Halo !
3 sty 18:38
^Bartek^: Dominik możesz pomóc emotka
3 sty 18:51
^Bartek^: Poprawka: http://pastebin.com/5nZFMHeA
3 sty 19:01
^Bartek^: ale dalej coś jest nie tak
3 sty 19:01
^Bartek^: Działa: code: from HTMLParser import HTMLParser import urllib class MyHTMLParser(HTMLParser): def handlestarttag(self, tag, attrs): print "Poczatek %s" % tag def handleendtag(self, tag): print "Koniec %s tag" % tag def handledata(self, data): print "Dane %s" % data p = MyHTMLParser() input = urllib.urlopen('https://matematykaszkolna.pl/forum/229545.html') html = input.read() input.close() p.feed(html) Dominik daj znać jak będziesz.
3 sty 19:31
^Bartek^: .
3 sty 23:59
^Bartek^: no to spadajcie!
4 sty 00:34
bezendu: Trochę kultury. Co Ty sobie myślisz, że oni nie mają nic innego do robienia jak tylko forum ? A po drugie to jest forum matematyczne, więc ciesz się, że i tak otrzymałeś pomoc.
4 sty 00:48
^Bartek^: druga wersja /\ Nie chcecie mi pomóc to znajdę pomoc gdzie indziej.
4 sty 01:01
RS: emotka
4 sty 01:02
asdf: ...Kolego, myślisz, ze codziennie wchodze na forum i czytam je Rozumiem Twoje "zdenerwowanie", pewnie sobie pomyslales "pierw tacy eksperci, a jak prosze o pomoc to nic nie umieja". Moja odpowiedz jest taka: w PHP nie siedze wiec Ci nie pomoge, bedziesz miec problem w innym jezyku (byle nie niskopoziomowym, albo tych co zaczynają się na P) to pomoge − o ile bede umiec. Nie pozdrawiam − za chamstwo, czesc.
4 sty 03:59
Trivial: Nie widziałem wcześniej tego tematu i nie za bardzo mam ostatnio czas na odpisywanie, ale zainteresuj się xpath (do bardziej skomplikowanych zapytań jest jeszcze xquery). Obie te technologie służą do pisania zapytań dla drzew XML. Przykładowe zapytania xpath: //li znajdź wszystkie węzły <li> //ul/li znajdź wszystkie węzły <li>, które są bezpośrednim dzieckiem węzła <ul> Tutaj szerszy opis: http://www.w3schools.com/xpath/xpath_syntax.asp Do wyszukiwania można użyć jeszcze selektorów CSS. Takie podejście stosuje jQuery (oraz oczywiście sam CSS). Wygląda to bardzo podobnie do xpath. http://www.w3schools.com/cssref/css_selectors.asp Możesz też użyć bezpośrednio API jakiejś biblioteki. Pierwsze znalezisko: http://stackoverflow.com/questions/4426504/python-library-to-do-jquery-like-text-extraction
4 sty 12:25
Trivial: A jeżeli robisz dużo takich przekształceń dla strony internetowej, bardzo dobrze sprawdza się też technologia XSLT. Mimo wielu wad, do pewnych zadań XSLT nadaje się znakomicie (np. przekształcanie chaotycznego drzewa strony internetowej w prosty XML lub plik tekstowy). Więcej tutaj: http://www.w3schools.com/xsl/ Jeżeli nie potrzebujesz tak zaawansowanych przekształceń, najbardziej eleganckim rozwiązaniem wydaje się użycie xpath. Tutaj gotowe rozwiązanie: http://ideone.com/eTXx5v PS: Tak wiem, że jestem Trivial. emotka
4 sty 13:25
^Bartek^ : Przepraszam za moje zachowanie ... Nie mogłem sobie z tym poradzić. Ale teraz wszystko jest jasne. Znalazłem inne sposoby😊
13 kwi 22:23
^Bartek^ : W ogóle ciekawi mnie co u Dominika jak mu idzie na studiach. Jak sie miewa asdf? Czy trivial ma juz magistra? Na ile bezendu napisał maturę próbna i na jakie studia planuje pójść ? Czym zajmuje sie Kejt ? Wszystko nagle umilkło. Czy na studiach nie na sie juz na nic czasu? Chyba nie wiec odezwijcie sie emotka
13 kwi 22:36
bezendu: Co tak ciekawi Cię moja osoba ? Matura próbna 86%
13 kwi 22:38
Saizou : czuj się zaszczycony
13 kwi 22:41
bezendu: Chyba zapadłem w pamięci kilku użytkownikom. Tylko czym emotka
13 kwi 22:49
Saizou : oby czymś dobrym
13 kwi 22:49
bezendu: Właśnie zastanawiam się czym
13 kwi 22:50
^Bartek^ : Po prostu kiedyś byłem tutaj aktywny rożnie sie nazywalem . I czytając takie tematy tez sie czegoś uczyłem . Czy o studiach albo o maturze. Bezendu jest dla mnie wzorem. Wiem ze on osiągnie sukces. Postrzegam go jako człowieka wytrwałego i wiedzącego czego chce. Który dąży do swojego celu. Staram sie byc taki sam. Nie wolno sie poddawać. Wystarczy robić cos codziennie nawet małymi krokami to w skali roku zrobimy wielki postęp.
13 kwi 22:54
bezendu: Lepiej bierz przykład z Saizou albo Piotra 10 to dalej dojedziesz emotka
13 kwi 22:55
^Bartek^ : Soizu tez znam. Dużo pomagał emotka
13 kwi 22:57
^Bartek^ : Miła eta trudno sobie wszystkich przypomnieć Basia
13 kwi 23:01
bezendu: Akurat tych dwóch Pań to nie da się zapomnieć emotka
13 kwi 23:01
asdf: w porządku Bartek, malo odwiedzam forum − jedynie by wejsc => napisac cos (glownie z informatyki) i tyle...kiedys to sie siedzialem czesciej, pomagalem troche oraz uczylo od innych − przede wszystkim. Teraz procz studiow inne rzeczy mam na glowie. Czy studia zabieraja duzo czasu − zalezy kiedy, jest czasem tak, ze nie ma za wiele do roboty, przyjda zaliczenia, egzaminy − czlowiek nie wie za co sie zabrac. Trivial ma inzyniera, a nie magistra (jeszcze, kwestia czasu emotka ).
14 kwi 02:52