Проблема с программным входом в систему с использованием httplib2 - PullRequest
1 голос
/ 13 февраля 2011

Я использую библиотеку httplib2 в python для программного входа на сайт.Ниже приведен мой код:

import urllib,httplib2
url='http://somesite.com'
header_data={'Content-type': 'application/x-www-form-urlencoded',
    'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10'
}
body={'username':'<username>','password':'<password>','Submit':'Sign in'}
http = httplib2.Http()
try:
    response,content = http.request(url,'POST',headers=header_data,body=urllib.urlencode(body)) 
except:
    print False
print response
print content

Я получаю словарь в ответ, но переменная содержимого пуста.Он должен иметь HTML-код страницы, не так ли?

Любой, чтобы это исправить?Пожалуйста, помогите Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2011

Как насчет этого?

from urllib import urlencode
from ulrlib2 import Request, urlopen

url='http://somesite.com'
header_data={'Content-type': 'application/x-www-form-urlencoded',
    'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10'}
body={'username':'<username>','password':'<password>','Submit':'Sign in'}

data = urlencode(body)
try:
    if method.upper() == 'GET':
        httpstream = urlopen(url+"&"+data)
    else:
        req = Request(url, data)
        httpstream = urlopen(req)
except:
    ...
result = httpstream.read()
httpstream.close()
...