如果需要太长时间,请跳过 for 循环内的 selenium Webdriver.get() 调用

嘿伙计们,我无法理解如何向 for in range 循环添加异常。现在,我正在从 Excel 工作表中提取 URL,并在整个页面中移动时抓取信息,直到到达第 200 页。问题是,并非所有 URL 的页面都达到 200,因此需要很长时间才能循环结束,并且程序可以使用另一个 URL 继续。有没有办法在这里的代码中实现异常?


from selenium import webdriver

import pandas as pd

import time


driver = webdriver.Chrome("C:/Users/Acer/Desktop/chromedriver.exe")


companies = []


df = pd.read_excel('C:/Users/Acer/Desktop/urls.xlsx')


for index, row in df.iterrows():

    base_url = (row['urls'])

    

    for i in range(1,201,1):

        

        url = "{base_url}?curpage={i}".format(base_url=base_url, i=i)

        driver.get(url)

        time.sleep(2)

        

        name = driver.find_elements_by_xpath('//a/div/div/p')

    

        for names in name:

            print(names.text, url)

            companies.append([names.text, url])


HUWWW
浏览 86回答 1
1回答

红糖糍粑

您可以在 Webdriver 上设置最大超时Timeout,然后监视循环中的异常:from selenium.common.exceptions import TimeoutExceptionMAX_TIMEOUT_SECONDS = 5driver = webdriver.Chrome("C:/Users/Acer/Desktop/chromedriver.exe")driver.set_page_load_timeout(MAX_TIMEOUT_SECONDS)for i in range(1, 201):    try:        url = "{base_url}?curpage={i}".format(base_url=base_url, i=i)        driver.get(url)    except TimeoutException:        # skip this if it takes more than 5 seconds        continue    ... # process the scraped URL as usual如果发生超时,则通过 跳过当前迭代continue。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python