python - 需要在 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)
解决方案
您需要一个循环来重复该过程。这应该有效。并且您可能想要充分睡眠或等待以确保页面上的所有元素都已加载。也可以尽量不要使用 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
推荐阅读
- angular - 如何解决此错误“无法使用查询参数声明路由,请在调用路由时添加它们”
- javascript - 如何每天自动点击网站上的按钮
- gitlab - 从 GitLab CI/CD 管道中排除项目
- python - sklearn.model_selection.train_test_split() 无法拆分 tf 不规则张量
- django - Django: ModuleNotFoundError: No module named 'psycopg2' on Mac
- ios - UIImageView 没有动画
- javascript - 使用模板内方法中定义的变量
- ios - 以编程方式设置 UIButton 的背景不起作用
- react-native - 如何在模态屏幕上隐藏底栏?
- java - Jenkins - Java & Selenium - 如何处理 2 个随机异常?