我写了一个大约1岁的小模块
当我试图为它添加一些功能时,我发现python的urllib
有一个很大的变化,我对如何构建请求感到困惑。
在旧模块中FancyURLopener
被用作我的基类,但我发现它是从版本3.3开始不推荐使用。
所以我再次阅读该文档,并尝试构建请求而不是开启者。
但是,当我尝试添加标头时,只提供了一个函数Request.add_header(key, val)
。我从fiddler那里复制了这样的标题:
GET some_url HTTP/1.1
Host: sosu.qidian.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-cn,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Referer: anothe_url
Cookie: a lot of data
Connection: keep-alive
所以我必须逐个将它们添加到请求中吗?
我还发现了另一个开放者urllib.request.build_opener()
,可以一次添加很多标题。但我无法设置方法' get'或者'发布'。
我是python的新手,有什么建议吗?
答案 0 :(得分:0)
到目前为止,在Python中发出http请求的最佳方法是安装和使用此模块:
http://docs.python-requests.org/en/latest/
您可以编写如下代码:
headers = {
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'anothe_url',
# etc
}
response = requests.get(some_url, headers=headers)
http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers