Что я делаю не так в среде виртуальной машины с постом Python Urllib2?
-
25-10-2019 - |
Вопрос
import urllib
import urllib2
from urllib2 import Request
url = 'https://www.google.com'
response = urllib2.urlopen(url)
login_url = (url + '/login')
data = {'email': 'john',
'password': 'example'}
req = Request(login_url, urllib.urlencode(data))
response = urllib2.urlopen(req)
File "test.py", line 50, in <module>
response = urllib2.urlopen(req)
File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 438, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 372, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 521, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 405: Method Not Allowed
Я делаю метод поста. Этот скрипт работает на моем Mac OSX, работающем Python 2.7.1, однако на моей виртуальной машине под управлением Python 2.7 он бросает эту ошибку. Есть ли некоторые httpheaders, я должен пройти, когда вы делаете запрос на почту?
Решение
Вы должны найти доктор, который вам нужен здесь:
http://code.google.com/apis/accounts/docs/authforinstalledapps.html
Для выполнения автозаправления вам нужно использовать этот URL -адрес https://www.google.com/accounts/clientlogin которые требуют сервиса, которую вы пытаетесь достичь, и предоставит вам Access_token для указанного сервиса
Вам нужно хранить cookie для этого типа запроса:
import urllib2
import cookielib
cookiejar = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
urllib2.install_opener(opener)
return urllib2
Другие советы
Да, для Google они, вероятно, потребуют, чтобы у вас был общий пользовательский агент для входа в систему. В дополнение к этому вам нужно будет хранить печенье, которое они дают вам в Python. Вы можете использовать cookiejar.
Это отличный учебник, который учит, как отправлять заголовки и сохранить файлы cookie для ваших запросов.http://www.voidspace.org.uk/python/articles/urllib2.shtml