Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python urllib.error.HTTPError:HTTP错误405:不允许_Python_Http_Urlopen - Fatal编程技术网

Python urllib.error.HTTPError:HTTP错误405:不允许

Python urllib.error.HTTPError:HTTP错误405:不允许,python,http,urlopen,Python,Http,Urlopen,你知道为什么这个脚本在试图打开url时会给出错误代码urllib.error.HTTPError:HTTP error 405:Not Allowed吗?在谷歌上找不到任何东西。该url使用Google Chrome正常打开。到今天为止,脚本已经正常运行了几个月 编辑:由于第一条评论,我成功地创建了一个脚本,修复了上面描述的问题。以下是使用Chrome检索到的包含必要cookie的脚本: import urllib.request url = 'http://www.oddsportal.co

你知道为什么这个脚本在试图打开url时会给出错误代码urllib.error.HTTPError:HTTP error 405:Not Allowed吗?在谷歌上找不到任何东西。该url使用Google Chrome正常打开。到今天为止,脚本已经正常运行了几个月

编辑:由于第一条评论,我成功地创建了一个脚本,修复了上面描述的问题。以下是使用Chrome检索到的包含必要cookie的脚本:

import urllib.request

url = 'http://www.oddsportal.com/ajax-next-games/1/0/1/20130820/'
print(url)
page = urllib.request.urlopen(url)
print(page)
删除cookie头将导致检索不需要的网页,并在脚本的最后一行显示“ROBOTS”等。为什么Cookiejar不自动存储cookie


编辑2:显然cookie会定期更改,因此必须自动检索。但是怎么做呢?

也许该页面已经开始根据您的用户代理更改结果了?您可以研究将用户代理头添加到请求中,看看这是否可以修复它。这与不允许的方法不同。我从一个不喜欢机器人解析JSON文件的站点收到了这个错误。更改用户代理可能会修复它。你可能还需要饼干。非常感谢你们两位!更改用户代理阻止了错误的发生。然而,检索到的页面不是我想要的。将cookie数据添加到标头解决了这一问题。我使用Google Chrome调试工具找到了必要的cookie数据。出于某种原因,http.cookiejar.cookiejar没有存储这些cookie。知道为什么吗?
import urllib.request
import http.cookiejar

url = 'http://www.oddsportal.com/ajax-next-games/1/0/1/20130820/'

cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
opener.addheaders = [('User-Agent', 'Mozilla/5.0')]
opener.addheaders = [('Cookie', 'D_UID=F1BC6DD9-DF9C-380C-A513-6124F4C86999')]

for cookie in cj:
    print(cookie.name, cookie.value)

print(opener.open(url).read()[:50]) # the full page is very long