2017-12-23 9 views
1

「HTTPエラー405:メソッドが許可されていません」というエラーが表示されます。私のコードは、私が推測するPython 3: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) 

エラーが= urllib.request.Request(URL、データ、ヘッダ=ヘッダ)REQになっています。構文的なエラーは何ですか?コードで何を変更する必要がありますか?そして、どんな概念的な間違いも私を訂正します。


EDIT

コンセプト:

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)) 
+1

への参照でエラーがクリアされています:サーバーが期待しないHTTPメソッドを使用しています。なぜあなたは 'https:// www.google.com/search'にPOSTリクエストを送信していますか? – Blender

+0

期待通りのGETメソッドとPOSTを使用しているので、適切なメソッドを見つける –

+0

@PavanKumarTSこれを行う正しい方法は何ですか?私はこれに初心者です。ありがとう。 –

答えて

1

代わりRequestsライブラリを使用することができます。これは、urllibは

import requests 
q = 'Whatever you want to search' 
url = 'https://www.google.com/search' 
response = requests.get(url+'?'+'q='+q) 
saveFile = open('response.txt', 'w') 
savefile.write(response.text) 
savefile.close() 

それとも、urllibはに固執したい場合は、あなたがこれを行うことができますよりもはるかにきれいです:

import urllib.request 
url = 'https://www.google.com/search' 
q = 'Search Query' 
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"} 
request = urllib.request.Request(url+'?'+'q='+q, headers=headers) 
response = urllib.request.urlopen(request).read() # the text of the response is here 
saveFile = open('withHeaders.txt', 'w') 
saveFile.write(str(response)) 
saveFile.close() 
+0

しかし、urllibを使ってそれを行う方法は?私はそれに新しいです。 –

+0

ありがとう私の悪い私はPOSTしようとしていたが、私はGET要求を出したい。 @Blenderにも感謝します。 –

+0

6行目に変更があり、 "read()"を追加するのを忘れた – Alireza

0

ここwww.pythonforbeginners

# Importing the module 
import urllib.request 


# your search text 
text="hi google" 

# Define the url 
url = 'http://www.google.com/#q='+text 

# Add your headers 
headers = {'User-Agent' : 'Mozilla 5.10'} 

# Create the Request. 
request = urllib.request.Request(url, None, headers) 

# Getting the response 
response = urllib.request.urlopen(request) 

# Print the headers 
print (response.read()) 
+0

Python 3ではどうなりますか? @パヴァンクマールT S –

+0

python 3のためのupdatd答え –

+0

ありがとう@パヴァンクマーT S –

関連する問題