Webscraping - 由于超时请求导致的不一致结果

时间:2017-10-11 16:54:22

标签: 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)

0 个答案:

没有答案