【问题标题】:Selenium crawler automate next button for 100+ pages using PythonSelenium 爬虫使用 Python 自动执行 100 多个页面的下一步按钮
【发布时间】:2022-01-23 10:46:57
【问题描述】:

我正在抓取所有 ID (3000+) 的页面,稍后我会将其保存到文本文件中。

所以我的代码按我想要的方式工作,但现在我正在寻找一种自动化方法,而不是重复以下过程 100 多次,点击网页。 比如:

next.click()*100.....

非常感谢您提供建设性的建议 :)

我当前的(工作)代码:

next = driver.find_element(By.CSS_SELECTOR,'img.down')
#next page button

main = driver.find_elements(By.CSS_SELECTOR, "span.id")
time.sleep(2)
for m in main:
    print(m.text)

next.click()

time.sleep(2)
main = driver.find_elements(By.CSS_SELECTOR, "span.id")

for m in main:
    print (m.text)

driver.quit()

【问题讨论】:

  • 在这种情况下我会使用无限while循环,你能提供更多上下文吗?在点击下一个按钮之前你在做什么?也可以点击下一个按钮,你可以只做next.click()为什么你在下一个网络元素之后有main = driver.find_elements(By.CSS_SELECTOR, "span.id") time.sleep(2) for m in main: print(m.text)循环?
  • @cruisepandey 感谢您的回复。好吧,我从图像中抓取 ID 的每一页,此后我通过next.click() 单击下一步并重复该过程。但是因为有 100+ 页 == 100+ next.click() 方法,所以有点麻烦。所以我正在寻找一种方法来解决这个问题。希望这能澄清一点。

标签: python selenium web-crawler click next


【解决方案1】:

感谢您的提示! 使用 WebDriverWait 的 while 循环可以解决问题。

wait = WebDriverWait(driver, 3)
while True:
        main = driver.find_elements(By.CSS_SELECTOR, "span.id")
        time.sleep(2)
        for m in main:
            print(m.text)
        try:
                element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'img.down')))
                element.click()
        except TimeoutException:
                break

driver.quit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多