【发布时间】:2020-01-19 12:25:15
【问题描述】:
我正在网站上进行网页抓取,有时在运行脚本时出现此错误:
ReadTimeout: HTTPSConnectionPool(host='...', port=443): Read timed out. (read timeout=10)
我的代码:
url = 'mysite.com'
all_links_page = []
page_one = requests.get(url, headers=getHeaders(), timeout=10)
sleep(2)
if page_one.status_code == requests.codes.ok:
soup_one = BeautifulSoup(page_one.content.decode('utf-8'), 'lxml')
page_links_one = soup_one.select("ul.product_list")
for links_one in page_links_one:
for li in links_one.select("li"):
all_links_page.append(li.a.get("href").strip())
我找到的答案并不令人满意
【问题讨论】:
-
除了增加通话超时外,别无他法。网站具有反报废保护机制,如果标记为报废,您的请求会挂起。尝试其他的东西,比如代理
-
即使我发送了标头,我怎么仍然被标记为报废?
-
如果您不共享 url,则很难调试问题。可以通过api访问吗?
-
您可能会根据时间和/或时间被标记为报废者。如果服务器在设定的时间内看到来自同一 IP 的太多请求,它可能会将您视为机器人,或者如果请求以精确的时间间隔发出,等等......任何可能表明非人类使用的情况。
标签: python python-3.x web-scraping beautifulsoup python-requests