我试图从this webpage获取具有数据部分属性的所有li节点,例如.响应html有我需要的六个必需节点,但其余大部分是通过ajax请求加载的,该请求返回包含剩余li节点的html.
所以我从使用请求切换到使用selenium与PhantomJS驱动程序,它应该是xhr友好但我没有得到额外的ajax加载内容.
可运行:
from selenium import webdriver
from lxml import html
br = webdriver.PhantomJS()
br.get(url)
tree = html.fromstring(br.page_source)
print tree.xpath('//li[@data-section]/a/text()')
简而言之,上面的代码无法通过xhr将html注入到网页中.我怎么能这样做?如果没有,我的其他无头选择是什么.
解决方法:
链接页面突出显示加载微调器(.archive_loading_bar),一旦加载数据就会消失.您可以使用具有invisibility_of_element_located的预期条件的explicit wait.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import webdriverwait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from lxml import html
driver = webdriver.PhantomJS()
driver.get(url)
wait = webdriverwait(driver, 10)
wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, '.archive_loading_bar')))
tree = html.fromstring(driver.page_source)
这是从this answer改编而来,等待最多10秒或直到数据加载.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。