Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在一段时间后跳过网页_Python_Selenium_Web Scraping_Automation - Fatal编程技术网

Python 如何在一段时间后跳过网页

Python 如何在一段时间后跳过网页,python,selenium,web-scraping,automation,Python,Selenium,Web Scraping,Automation,我正在解析一个有很多大学的文件。Selenium googles“招生”+大学名称,然后单击第一个链接并从每个页面获取一些数据。问题是,我从中提取的大学名称列表非常粗糙(从技术上讲是美国所有认证机构的列表),因此一些链接被破坏或陷入加载循环。我如何设置某种计时器,基本上是 if page load time > x seconds: go to next element in list 您可以在页面上调用WebDriverWait,如果页面捕获到TimeoutEx

我正在解析一个有很多大学的文件。Selenium googles
“招生”+大学名称
,然后单击第一个链接并从每个页面获取一些数据。问题是,我从中提取的大学名称列表非常粗糙(从技术上讲是美国所有认证机构的列表),因此一些链接被破坏或陷入加载循环。我如何设置某种计时器,基本上是

    if page load time > x seconds:
        go to next element in list

您可以在页面上调用
WebDriverWait
,如果页面捕获到
TimeoutException
,则您将知道加载时间过长,因此可以继续下一个页面

由于您不知道每个页面的HTML将是什么样子,这是一个非常具有挑战性的问题

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException


# list of college names
names = []

for name in names:
    # search for the college here

    # get list of search results
    WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='rc']")))
    search_results = driver.find_elements_by_xpath("//div[@class='rc']")

    # get first result
    search_result = search_results[0]

    # attempt to load the page
    try:
        search_result.click()
    except TimeoutException:
        # click operation should time out if next page does not load
        # pass to move on to next URL
        pass

这是一个非常粗略的概述。正如我提到的,如果不知道预期的页面标题是什么,或者预期的页面内容是什么样子,那么编写一个能够成功实现这一点的通用方法是非常困难的。这段代码只是您的起点。

页面加载的默认超时可能非常大,具体取决于驱动程序。您可以设置它(),和/或使用“PageLoadStrategy”设置。