【发布时间】:2017-09-11 13:46:17
【问题描述】:
我用 python 编写了一个脚本来从加载缓慢的网页中抓取名称。该页面中有 1000 个名称,只有在使浏览器向下滚动时才能加载全部内容。但是,我的脚本可以成功到达此页面的最低部分并解析所有名称。我在这里面临的问题是我使用了硬编码延迟,在这种情况下为 5 秒,即使在加载项目时,它也会使浏览器不必要地等待。那么我如何使用显式等待来克服这种情况并解析所有项目。
这是我目前编写的脚本:
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://fortune.com/fortune500/list/")
check_height = driver.execute_script("return document.body.scrollHeight;")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5)
height = driver.execute_script("return document.body.scrollHeight;")
if height == check_height:
break
check_height = height
listElements = driver.find_elements_by_css_selector(".company-title")
for item in listElements:
print(item.text)
【问题讨论】:
标签: python python-3.x selenium selenium-webdriver web-scraping