python - urllib2 给出 HTTP 错误 400 : Bad Request for certain urls, 对其他人有效

标签 python http url urllib2

我正在尝试使用 Python 的 urllib2 模块执行一个简单的 HTTP get 请求。它有时有效,但有时我会收到 HTTP Error 400: Bad Request。我知道这不是 URL 的问题,因为如果我使用 urllib 并简单地执行 urllib.urlopen(url) 它工作正常 - 但是当我添加标题并执行 urllib2.urlopen() 我在某些网站上收到错误请求。

这是不起作用的代码:

# -*- coding: utf-8 -*-
import re,sys,urllib,urllib2

url = "http://www.gamestop.com/"

headers = {'User-Agent:':'Mozilla/5.0'}

req = urllib2.Request(url,None,headers)
response = urllib2.urlopen(req,None)
html1 = response.read()

(gamestop.com 是无效 URL 的示例)

一些不同的站点可以工作,有些则不能,所以我不确定我在这里做错了什么。我错过了一些重要的标题吗?请求不正确?使用错误的用户代理? (我也尝试使用我浏览器的确切用户代理,但没有解决任何问题)

谢谢!

最佳答案

您的 header 中多了一个冒号。

headers = { 'User-Agent:': 'Mozilla/5.0' }

应该是:

headers = { 'User-Agent': 'Mozilla/5.0' }

关于python - urllib2 给出 HTTP 错误 400 : Bad Request for certain urls, 对其他人有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6319890/

相关文章:

asp.net-mvc - 从 Application_Start 中获取网站的 URL?

url - 值为空字符串的 WebApi 请求 URL

java - 网络资源中的驼峰式大小写

python - MyPy 需要派生类变量的类型注释

python - 在 Python 中使用 str.replace() 删除函数包装

java - 获取与预期不同的 http 状态代码

Angularjs + 拦截器 + 只为 http 请求添加查询参数(不是 html、js、css 文件)

python - csv.DictReader 中的行数

python - 为什么 np.linalg.norm(..., axis=1) 比写出向量范数的公式慢?

java: 让 Apache HttpClient 连接到具有特定 IP 的主机