首页 > 解决方案 > 需要在 Python Selenium 中抓取分页页面

问题描述

我有一个 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)

标签: pythonselenium

解决方案


您需要一个循环来重复该过程。这应该有效。并且您可能想要充分睡眠或等待以确保页面上的所有元素都已加载。也可以尽量不要使用 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

推荐阅读