selenium可以向下滚动浏览器并且只能同时解析新内容吗?

时间:2015-01-05 10:13:05

标签: python selenium web-scraping

我要解析的网页有超过几千个链接。它还具有无限滚动功能,这意味着我需要在Selenium中使用send_keys(Keys.PAGE_DOWN)来扩展页面以获取更多内容。

是否可以使用selenium向下滚动浏览器,同时只解析新内容?我不想反复解析旧内容或等待网页到达底部然后解析,因为网页有大量链接。

有什么建议吗?如果有一个更好的python库可以帮助我这样做,请也让我知道。谢谢。

1 个答案:

答案 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)