我遇到了一个问题,之前当我通过 Selenium 抓取多个页面时,只需使用单击下一页按钮并使用 NoSuchElementException
来停止它。
但是我现在面对的url是元素始终存在,在最后一页中,如果我单击下一页按钮,它只会重新加载当前页面。
谁能帮忙解决如何停止点击同一个按钮?
items=driver.find_elements_by_class_name('item')
while True:
try:
#click next page
driver.find_element_by_link_text('下一页').click()
sleep(5)
#scrpae data here
items=driver.find_elements_by_class_name('item')
for i in range(0, len(items)):
results.append(items[i])
print(items[i])
except NoSuchElementException:
break
有关页面详细信息,您可以查看下面的图片
最佳答案
[已编辑]
您可以通过匹配下一页链接中的当前页面 url 和下一页 url 来解决此问题。 如果当前页面 url 与下一页链接中的 url 匹配,则它是最后一页。否则继续抓取。
您应该有一个变量来存储当前页面 URL,当您通过 selenium 单击下一页链接时,您将获取页面 URL 并与上一页匹配。
这就是我要说的:
url = "https://humkinar.com.pk/"
driver.get(url)
items=driver.find_elements_by_class_name('item')
current_page_url = ""
prev_page_url = url
while True:
try:
driver.find_element_by_link_text('下一页').click()
current_page_url = driver.current_url
if current_page_url != prev_page_url:
time.sleep(5)
items=driver.find_elements_by_class_name('item')
for i in range(0, len(items)):
results.append(items[i])
print(items[i])
prev_page_url = current_page_url
else:
break
except NoSuchElementException:
break
关于python - 如何通过selenium停止点击同一个按钮,而该按钮始终存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54177197/