【问题标题】:Need to Scrape Paginated Pages in Python Selenium需要在 Python Selenium 中抓取分页页面
【发布时间】:2018-05-27 14:33:44
【问题描述】:

我有一个 selenium / python 脚本,可以抓取页面标题和其他一些信息。页面底部是一个“下一步”按钮以及一些分页,当我单击下一步时会加载接下来的 20 个左右的结果。这一切都发生在没有页面加载的情况下。我需要能够抓取剩余的页面,直到“下一步”按钮不再可见,这表明没有更多的结果要加载。以下是我迄今为止给你一个想法的逻辑。我已经简化了它,所以很容易理解。我可以抓取标题的第一页,但是一旦浏览器单击“下一步”,脚本就会终止。我如何让它刮掉剩余的页面?谢谢!

#loads web page
browser.get("URL")

#scrapes titles
deal_title = browser.find_elements_by_xpath("element xpath")
titles = []
    for title in deal_title:
    titles.append(title.text)

#clicks next button
browser.find_element_by_xpath("button xpath")

print(title)

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    您需要一个循环来重复该过程。这应该有效。并且您可能想要充分睡眠或等待以确保页面上的所有元素都已加载。也可以尽量不要使用 Xpath。如果您可以定位类或ID,那就更好了。

    from selenium.common.exceptions import NoSuchElementException
    
    while True:
    
    
          title = browser.find_elements_by_xpath("element xpath")
          titles = []
          for title in deal_title:
             titles.append(title.text)
    
          try:
                browser.find_element_by_xpath("xpath of the next button").click()
    
    
          except NoSuchElementExeception :
                 break
    

    【讨论】:

    • Python 中没有catch 这样的运算符。 deal_title 未在您的代码中定义。代码中的缩进有几个明显的问题。另外使用前需要导入NoSuchElementExeception
    • 糟糕,我的错误是在 java 中工作了一段时间,catch 自动出现而不是 except。关于导入,我认为它可以理解。无论如何做出了改变
    猜你喜欢
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2021-07-23
    • 2018-06-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多