Python Webscraping-由于超时请求而导致不一致的结果
我正在使用Python 3.6从网站上抓取一些公共数据。 我创建了一长串需要刮取的页面URL(10k+)。 我解析每一个,生成一个包含所有相关信息的列表,然后将其附加到一个综合列表中 我曾经收到一些超时请求错误,所以我尝试使用try/except来处理它 代码运行时没有明显的错误,但是,重新运行代码时,我得到了非常不一致的结果:最终列表的长度发生了实质性变化,我可以证明并非所有页面都已被解析。 因此,我的代码在某个点关闭,我无法检查在什么点。 不管列表产生多长时间,time_out变量在末尾始终为零 感谢您的帮助! 最好的 以下是我认为是代码的相关部分Python Webscraping-由于超时请求而导致不一致的结果,python,python-3.x,web-scraping,beautifulsoup,Python,Python 3.x,Web Scraping,Beautifulsoup,我正在使用Python 3.6从网站上抓取一些公共数据。 我创建了一长串需要刮取的页面URL(10k+)。 我解析每一个,生成一个包含所有相关信息的列表,然后将其附加到一个综合列表中 我曾经收到一些超时请求错误,所以我尝试使用try/except来处理它 代码运行时没有明显的错误,但是,重新运行代码时,我得到了非常不一致的结果:最终列表的长度发生了实质性变化,我可以证明并非所有页面都已被解析。 因此,我的代码在某个点关闭,我无法检查在什么点。 不管列表产生多长时间,time_out变量在末尾始终
import requests
from bs4 import BeautifulSoup
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}
LIST_OF_URLS = ['URL','URL','URL']
FINAL_LIST = []
timed_out = 0
for URL in LIST_OF_URLS:
try:
result_page = BeautifulSoup(requests.get(URL, headers=headers,timeout=10).text, 'html.parser')
except requests.exceptions.Timeout:
timed_out+=1
#The loop produces a LIST
FINAL_LIST.append(LIST)
在第16行,
LIST
做了什么?它表示循环生成一个列表,然后附加到最终的列表中。不清楚,我的错。我建议使用Python的本机日志库(import logging
)来记录有关失败HTTP请求的信息。也许在两次请求之间,您的互联网正在崩溃?其他任何人都很难可靠地重现这些错误。其中一个问题是由于互联网不稳定,我修复了它。然而,总体问题仍然存在。首先,我将尝试使用Python的本机日志库。谢谢您是否尝试过收集实际超时的URL,而不是增加计数,然后重新对其进行爬网?第16行的LIST
做了什么?这表示循环生成了一个列表,然后附加到最终的\u列表中。不清楚,我的错。我建议使用Python的本机日志库(import logging
)来记录有关失败HTTP请求的信息。也许在两次请求之间,您的互联网正在崩溃?其他任何人都很难可靠地重现这些错误。其中一个问题是由于互联网不稳定,我修复了它。然而,总体问题仍然存在。首先,我将尝试使用Python的本机日志库。谢谢您是否尝试过收集实际超时的URL,而不是增加计数,然后重新对其进行爬网?