2017-12-23 6 views
1

'HTTP 오류 405 : 허용되지 않는 메소드'오류가 발생합니다. 내 코드파이썬 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) 

같아요 오류가 REQ = urllib.request.Request (URL, 데이터, 헤더 = 헤더)에서입니다. 구문 오류는 무엇입니까? 코드에서 무엇을 변경해야합니까? 그리고 어떤 개념상의 실수라도 저를 바로 잡습니다.


편집

개념 :

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

www.pythonforbeginners에 : 그것은 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에 충실하려는 경우, 당신이 할 수있는 것보다 훨씬 청소기입니다 : 서버가 기대하지 않는 HTTP 메소드를 사용하고 있습니다. POST 요청을'https : // www.google.com/search'으로 보내는 이유는 무엇입니까? – Blender

+0

GET 메소드가 예상대로 작동하고 POST를 사용하고 있으므로 적절한 방법을 찾으십시오. –

+0

@ PavanKumarTS 올바른 방법은 무엇입니까? 나는 이것에 초보자이다. 덕분에 –

답변

1

대신 Requests 라이브러리를 사용할 수 있습니다. 오류가 분명하다

다음 기준에
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하는 중이 었는데 요청하고 싶습니다. 감사합니다. @Blender. –

+0

6 행 변경, "read()"추가를 잊어 버렸습니다 – Alireza

0

# 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

파이썬 3에서는 어떨까요? @ 파반 쿠마르 T S –

+0

python 3에 대한 updatd 대답 –

+0

@ Pavan 쿠마 T S –

관련 문제