使用urllib发送GET请求遇问题:误发POST且提示无get方法
正确使用urllib发送带Referer头的GET请求
问题原因
- 你第一段代码发送POST请求,是因为
request.Request只要传入了data参数(哪怕是空字典{}),就会默认使用POST方法。 - 第二段代码报错是因为
request.get()是requests库的方法,而非Python标准库urllib.request的方法,所以找不到该方法。
正确写法
方法一:移除data参数(推荐)
直接不传data,Request对象默认使用GET方法,同时通过headers参数设置Referer:
from urllib import request req = request.Request(url, headers={'Referer': 'my_original_header'}) res = request.urlopen(req)
方法二:显式指定GET方法
如果一定要保留data参数(GET请求通常不需要传data),可以显式设置method='GET':
from urllib import request req = request.Request(url, data={}, method='GET', headers={'Referer': 'my_original_header'}) res = request.urlopen(req)
补充:如果想用类似.get()的简洁写法
如果习惯用get()这种调用方式,需要安装并使用第三方库requests:
import requests res = requests.get(url, headers={'Referer': 'my_original_header'})
注意这不是标准库urllib的用法,需先通过pip install requests安装。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

