2016-01-06 2 views
0

скребковые статические страницы отлично работает так:Python PhantomJS & Beautifulsoup Скремблирование Java - Что здесь пропало?

soup = BeautifulSoup(driver.page_source, "lxml") 


for results in soup.findAll("li", {"class" : "open"}): 
    print(results.get_text()) 

Но сайты Javascript вызывают меня проблемы.

Так что я использую PhantomJS, и очевидная мысль в начале была «она просто не загружена, когда я пытаюсь очистить».

Так что я застрял в time.sleep (не идеальный - я знаю, что буду менять на presence_of_element_locate) и а:

driver.save_screenshot('screenshot.png') # save a screenshot to disk 

Это скриншот показывает данные Я ищу загрузится. Я могу очистить другие биты данных с этой страницы, используя тот же код, что и выше, для элементов, загруженных без Java.

Согласно снимку экрана, данные есть на странице. И я использую те же данные, что и в .Net libs, которые отлично читают один и тот же сайт.

for names in soup.findAll("span", {"class" : "the-name ng-name ng-big-scope"}): 
     print(names) 

Я удалил .get_text() здесь на всякий случай, из-за чего что-то сломалось. Но в любом случае это ничего не возвращает. И я не могу понять, почему.

я могу использовать те же данные в vb.net:

For Each element As HtmlElement In Me.Browser.Document.GetElementsByTagName("span") 
    If element.GetAttribute("className").Contains("the-name ng-name ng-big-scope") Then 
        print(element.innertext) 
    End If 
Next 

Я знаю, что я использую .Contains в примере .net там, но я втройне проверил это имя правого класса в этом случае ,

Таким образом, синтаксис работает с статическими данными. У меня есть имена классов и т. Д., Потому что я могу очистить его .Net. Данные, которые я ищу, загружены (согласно снимку экрана).

Я в тупике. Будет очень признателен всем, кто может указать, где я здесь.

/Edit:

Я провел тест на другом сайте на основе Javascript и он получил первый результат и немного второй. Когда там было десяток результатов. Снова .Net справилась с этим без проблем.

Итак, я рассматриваю возможность того, что мой синтаксис прекрасен, и проблема заключается в том, что BF обрабатывает неверный код на сайте. Попытайтесь попробовать альтернативу или два и посмотрите, не изменит ли это что-либо.

ответ

0

В коде ничего не отображается.

Нарушенный HTML-код на сайте вызывал проблемы с lxml, в результате чего результаты не читались.

Смежные вопросы