【问题标题】:Scraper doesn't stop clicking on the next page buttonScraper 不停地点击下一页按钮
【发布时间】:2018-04-25 20:06:01
【问题描述】:

我在 python 中结合 selenium 编写了一个脚本,以便在搜索时显示一些名称和相应的地址,搜索关键字是“Saskatoon”。但是,在这种情况下,数据会遍历多个页面。除了一件事,我的脚本几乎可以做所有事情。

  1. 即使没有更多页面要遍历,它仍然运行。最后一页还带有“>”标志,表示下一页选项,并且不显示为灰色。

这里是链接:Page_link

搜索关键字:Saskatoon(在城市/城镇字段中)。

这是我写的:

from selenium import webdriver; import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("above_link")
time.sleep(3)

search_input = driver.find_element_by_id("cityField")
search_input.clear()
search_input.send_keys("Saskatoon")
search_input.send_keys(Keys.ENTER)

while True:
    try:
        wait.until(EC.visibility_of_element_located((By.LINK_TEXT, "›"))).click()
        time.sleep(2)
    except:
        break
driver.quit()

顺便说一句,我刚刚从这个脚本中取出了姓名和地址部分,我认为这与这里无关。谢谢。

【问题讨论】:

  • 那么,这种情况可能是怎样的?

标签: python python-3.x selenium selenium-webdriver web-scraping


【解决方案1】:

您可以使用> 按钮的class 属性,因为在最后一页上它是"ng-scope disabled",而在其余页面上-"ng-scope"

wait.until(EC.visibility_of_element_located((By.XPATH, "//li[@class='ng-scope']/a[.='›']"))).click()

【讨论】:

  • 感谢安德森爵士的回答。为此加一。与您联系总是很高兴。但是,由于某种原因,当我将您的定位器放入我的脚本中时,它现在无法单击下一页。
  • 好的。让我检查一下
  • 哦,是的,它的父类名称li :) 检查更新
  • 我从来没有发现你的尝试是徒劳的。顺便说一句,现在我是 CSS 选择器的忠实粉丝。因此,在您的空闲时间请看看是否也可以使用 css 选择器来创建它。感谢一万亿。
  • 试试"li[class='ng-scope']>a[ng-click='setCurrent(pagination.current + 1)']"
猜你喜欢
  • 2018-08-30
  • 1970-01-01
  • 2014-04-09
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多