python请求中的连接错误

时间:2018-08-23 13:43:53

标签: python python-requests anaconda

我正在尝试使用beautifulsoup和anaconda来搜索python 3.6。
我正试图爬accuweather.com来查找特拉维夫的天气。

这是我的代码:

from bs4 import BeautifulSoup
import requests
data=requests.get("https://www.accuweather.com/he/il/tel- 
aviv/215854/weather-forecast/215854") 
soup=BeautifulSoup(data.text,"html parser")
soup.find('div',('class','info'))

我收到此错误:

raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', OSError("(10060, 
'WSAETIMEDOUT')",))

我该怎么办,这个错误是什么意思?

2 个答案:

答案 0 :(得分:1)

问题不在于代码,而在于网站。
如果您在请求的标题中添加User-Agent字段,则该字段看起来像是来自浏览器。

示例:

from bs4 import BeautifulSoup
import requests

headers = {
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}

data=requests.get("https://www.accuweather.com/he/il/tel-aviv/215854/weather-forecast/215854", headers=headers) 

答案 1 :(得分:1)

  

此错误是什么意思

搜索“ errno 10600”会产生很多结果。基本上,这是一个低级的网络错误(这不是http特定的,对于任何类型的网络连接您都可能遇到相同的问题),其规范描述为

  

连接尝试失败是因为被连接方在一段时间后未正确响应,或者由于连接的主机未能响应而建立的连接失败

IOW,您的系统无法连接到主机。这可能是出于多种原因,要么是临时的(例如您的Internet连接断开),要么不是临时的(例如,代理-如果您位于代理之后-阻止对此主机的访问等),或者很简单(如实际情况)此处)主机阻止了您的请求。

出现此类错误时,第一件事就是检查您的互联网连接,然后尝试在浏览器中获取该url。如果您可以在浏览器中找到它,则通常是主机阻止您,最常见的是基于客户端的“用户代理”标头(此处的客户端为requests)并指定“标准”用户代理如新手答案中所述,标题应该可以解决问题(在这种情况下确实可以解决,或者至少对我有用)。

NB:设置用户代理:

headers = {
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
data = requests.get("https://www.accuweather.com/he/il/tel-aviv/215854/weather-forecast/215854", headers=headers)