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注入到网页中.我怎么能这样做?如果没有,我的其他无头选择是什么.
链接页面突出显示加载微调器(.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秒或直到数据加载.
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |