![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kodzik :
Kod QWebPage page; QWebFrame * frame = page.mainFrame(); frame->setHtml(str); QWebElement document = frame->documentElement(); QWebElementCollection tables = document.findAll(".table"); int numTables = tables.count(); qDebug() << numTables; return; Pod zmienną str znajduje się źródło tej strony : http://panoramafirm.pl/szukaj/mazowieckie,...wa/firmy,1.html Chcę pobrać ilość elementów o klasie table. Niestety program podaje, że tych elementów jest 0. Podczas gdy w rzczywistości jest ich 15. Gdy zamiast ".table" dam "a", to zwraca mi to 17, czyli jakieś linki znajduje ale chyba jest ich ciut za mało. W czym może być problem ? Wszystkie tabelki są w divie o klasie "results" <- tego diva nie mogę pobrać. Mogę za to pobrać div o nazwię 'socialIcons right" ale nie w całości - na nim program kończy parsowanie. Ten post edytował peter13135 4.08.2012, 16:07:05 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli moje przypuszczenie jest poprawne - metoda setHtml instruuje QWebView żeby zaczął parsować HTML. Ale on to robi asynchronicznie więc reszta kodu spokojnie się wykonuje, nawet jeśli drzewo DOM nie zostało do końca zbudowane. UIWebView w iOSie udostępnia metodę delegata (coś ala slot w Qt) żeby powiadomić nas kiedy jest on gotowy do użycia. Nie rozumiem do końca kodu @katsuo ale przypuszczam że QWebFrame udostępnia jakiś sygnał informujący o załadowaniu się htmla w który można się wpiąć.
Co do regexpa to wolne przypuszczenie. Możliwe że kiedy ty dokonujesz manipulacji regexem te parę ms wystarcza żeby drzewo DOM zostało załadowane. * Wydaje mi się dziwne żeby samo obcięcie końcówki taga magicznie "naprawiło" HTMLa - jest niby taka możliwość, ale wtedy dokument sypałby się wszędzie. @EDIT Z dokumentacji Qt Cytat ExternalThe html is loaded immediately; external objects are loaded asynchronously. Sam już nie wiem (IMG:style_emoticons/default/smile.gif) niby drzewo DOM jest ładowane od razu a tylko reszta dociągana. Chyba dokument jest generowany JSem. Ten post edytował everth 8.08.2012, 21:12:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 14:44 |