我有一个selenium / python脚本可以抓取页面标题和其他一些信息。页面底部是" next"按钮以及一些分页,当我点击下一个时,会加载接下来的20个结果。这一切都没有页面加载。我需要能够刮掉剩余的页面直到" next"按钮不再可见,表示没有更多结果要加载。以下是我到目前为止给你一个想法的逻辑。我简化了它,因此很容易遵循。我可以抓第一页的标题,但一旦浏览器点击" next"脚本终止。如何让它刮掉剩余的页面?谢谢!
#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)
答案 0 :(得分:0)
你需要一个循环来重复这个过程。这应该工作。你可能想要充足的睡眠或等待以确保页面上的所有元素都被加载。也可以尽量不要使用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