скребковые статические страницы отлично работает так: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 обрабатывает неверный код на сайте. Попытайтесь попробовать альтернативу или два и посмотрите, не изменит ли это что-либо.