我要解析的网页有超过几千个链接。它还具有无限滚动功能,这意味着我需要在Selenium中使用send_keys(Keys.PAGE_DOWN)来扩展页面以获取更多内容。
是否可以使用selenium向下滚动浏览器,同时只解析新内容?我不想反复解析旧内容或等待网页到达底部然后解析,因为网页有大量链接。
有什么建议吗?如果有一个更好的python库可以帮助我这样做,请也让我知道。谢谢。
答案 0 :(得分:0)
您可以编写一个简单的循环,仅使用xpath提取新呈现的链接。如果不了解您正在解析的页面的更多信息,我会假设所有a
标签都是合理的游戏:
driver = webdriver.Firefox()
links = []
while True:
# Get any links beyond the ones we already have
elements = driver.find_elements_by_xpath(
"//a[position()>{}]".format(len(links))
# If there are no more links, stop
if not len(elements):
break
# "Parse" the links
links += elements
# Page down to trigger load of next batch
driver.find_element_by_tag_name("html").send_keys(Keys.PAGE_DOWN)