我使用下面的代码收到以下错误。
HTTP错误406:不可接受的Python urllib2
这是我使用beautifulsoup解析页面之前的第一步。
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
url = "http://www.choicemoney.us/retail.php"
response = opener.open(url)
所有人都非常感谢。
答案 0 :(得分:5)
请求标识的资源只能生成 具有不可接受的内容特征的响应实体 根据请求中发送的接受标头。 [RFC2616]
根据代码和RFC描述的内容,我假设您需要正确设置User-Agent
标头的密钥和值。
这些是正确的例子:
Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A
只需替换以下内容。
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A')]
答案 1 :(得分:1)
我相信@ ipinak的答案是正确的。
urllib2
实际上提供了一个适用于此处的默认用户代理,因此如果您删除opener.addheaders = [('User-agent', 'Mozilla/5.0')]
,则响应的状态代码应为200.
我建议使用流行的requests库进行此类工作,因为它的API更易于使用。
url = "http://www.choicemoney.us/retail.php"
resp = requests.get(url)
print resp.status_code # 200
print resp.content # can be used in your beautifulsoup.