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」を表示する理由は何ですか? Google で何も見つかりませんでした。URLはGoogle Chromeで正常に開きます。スクリプトは、今日まで数か月間正常に機能しています。
編集: 最初のコメントのおかげで、上記の問題を修正するスクリプトを作成できました。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 ヘッダーを削除すると、不要な Web ページが取得されます (スクリプトの最終行に「ROBOTS」などを表示します)。Cookiejar がその Cookie を自動的に保存しないのはなぜですか?
編集 (2): どうやらその Cookie は定期的に変更されるため、自動的に取得する必要があります。しかし、どのように?