Selenium PhantomJS webdriver无法获取ajax内容

pad*_*pad 3 python ajax selenium phantomjs selenium-webdriver

我试图刮一个页面,通过ajax加载其大部分内容.

我试图从这个网页中获取li具有data-section属性的所有节点.响应html有六个我需要的节点,但其余大部分是通过ajax请求加载的,该请求返回包含剩余节点的html .li

所以我从使用请求切换到使用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()')
Run Code Online (Sandbox Code Playgroud)

简而言之,上面的代码无法通过xhr将html注入到网页中.我怎么能这样做?如果没有,我的其他无头选择是什么.

Art*_* B. 8

链接页面突出显示加载微调器(.archive_loading_bar),一旦加载数据就会消失.您可以使用具有预期条件的显式等待invisibility_of_element_located.

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)
Run Code Online (Sandbox Code Playgroud)

这是从这个答案改编而来,等待最多10秒或直到数据加载.