私の質問は、Python 3にurllibはモジュールについては、私が期待どおりurlopenは405エラー
import urllib.request
import urllib.parse
url = "https://google.com/search?q=stackoverflow"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'}
try:
req = urllib.request.Request(url, headers=headers)
resp = urllib.request.urlopen(req)
file = open('googlesearch.txt.', 'w')
file.write(str(resp.read()))
file.close()
except Exception as e:
print(str(e))
作品次のコードで返すとGoogleの内容を書き込みますファイル内で 'stackoverflow'を検索します。有効なUser-Agentを設定する必要があります。さもなければ、Googleはリクエストを許可せず、405 Invalid Methodエラーを返します。
私はそれは同じのUser-Agentと同じGoogle検索であるようなコード
import urllib.request
import urllib.parse
url = "https://google.com/search"
values = {'q': 'stackoverflow'}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'}
data = urllib.parse.urlencode(values)
data = data.encode('utf-8')
try:
req = urllib.request.Request(url, data=data, headers=headers)
resp = urllib.request.urlopen(req)
file = open('googlesearch.txt.', 'w')
file.write(str(resp.read()))
file.close()
except Exception as e:
print(str(e))
の以下の部分は、最初のものと同じ出力を生成するべきだと思います。ただし、このコードでは、「HTTPエラー405:メソッドが許可されていません」というメッセージを含む例外がスローされます。
私の質問は次のとおりです。コードの2番目の部分で何が問題になっていますか?最初の出力と同じ出力を生成しないのはなぜですか?
'data ='を使用すると、POST要求をしています...エンコードされた値をURLの末尾に追加したいと思います... –