我正在使用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)