【发布时间】:2018-06-05 16:24:45
【问题描述】:
我收到“HTTP 错误 405:不允许的方法”错误。我的代码是
import urllib.request
import urllib.parse
try:
url = 'https://www.google.com/search'
values = {'q': 'python programming tutorials'}
data = urllib.parse.urlencode(values)
data = data.encode('utf-8') # data should be bytes
headers = {}
headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
req = urllib.request.Request(url, data, headers = headers)
resp = urllib.request.urlopen(req)
print("HERE")
respData = resp.read()
saveFile = open('withHeaders.txt', 'w')
saveFile.write(str(respData))
saveFile.close()
except Exception as e:
print(e)
我猜的错误在于 req = urllib.request.Request(url, data, headers = headers)。什么是错误,语法?代码中应该改变什么?任何概念上的错误都会纠正我。
编辑
概念:
def URLRequest(url, params, method="GET"):
if method == "POST":
return urllib2.Request(url, data=urllib.urlencode(params))
else:
return urllib2.Request(url + "?" + urllib.urlencode(params))
【问题讨论】:
-
错误很明显:您正在使用服务器不期望的 HTTP 方法。为什么要向
https://www.google.com/search发送 POST 请求? -
它确实是它所期望的 GET 方法,并且您正在使用 POST 所以找到合适的方法
-
@PavanKumarTS 正确的方法是什么?我是这方面的新手。
标签: python python-3.x https urllib urlopen