1
import urllib.request

url = 'http://www.oddsportal.com/ajax-next-games/1/0/1/20130820/'
print(url)
page = urllib.request.urlopen(url)
print(page)

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

编辑:感谢第一条评论,我设法创建了一个脚本来解决上述问题。这是使用 Chrome 检索到的带有必要 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

删除 cookie 标头将导致检索到不需要的网页(在脚本的最后一行显示“ROBOTS”等)。为什么 Cookiejar 不自动存储该 cookie?

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

4

0 回答 0