Моделирование браузера - Python

Я должен получить доступ к нескольким страницам HTML через сценарий Python, проблема состоит в том, что мне нужна функциональность COOKIE, поэтому простой urllib Запрос HTTP не будет работать.

Какие-либо идеи?

8
задан RadiantHex 2 April 2010 в 16:16
поделиться

3 ответа

посмотрите Mechanize. "Программируемый просмотр веб-страниц на языке Python".
Он автоматически обрабатывает куки.

import mechanize

br = mechanize.Browser()
resp = br.open("http://www.mysitewithcookies.com/")
print resp.info()  # headers
print resp.read()  # content

Mechanize также предоставляет API urllib2, в котором обработка cookie включена по умолчанию.

14
ответ дан 5 December 2019 в 08:51
поделиться

Вот что-то, что делает файлы cookie, и в качестве бонуса выполняет аутентификацию для сайта, для которого требуется имя пользователя и пароль.

import urllib2
import cookielib
import string



def cook():
    url="http://wherever"
    cj = cookielib.LWPCookieJar()
    authinfo = urllib2.HTTPBasicAuthHandler()
    realm="realmName"
    username="userName"
    password="passWord"
    host="www.wherever.com"
    authinfo.add_password(realm, host, username, password)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), authinfo)
    urllib2.install_opener(opener)

    # Create request object
    txheaders = { 'User-agent' : "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)" }
    try:
        req = urllib2.Request(url, None, txheaders)
        cj.add_cookie_header(req)
        f = urllib2.urlopen(req)

    except IOError, e:
        print "Failed to open", url
        if hasattr(e, 'code'):
            print "Error code:", e.code

    else:

        print f
        print f.read()
        print f.info()
        f.close()
        print 'Cookies:'
        for index, cookie in enumerate(cj):
            print index, " : ", cookie      
        cj.save("cookies.lwp")
2
ответ дан 5 December 2019 в 08:51
поделиться

Модуль cookielib обеспечивает обработку файлов cookie для клиентов HTTP.

Модуль cookielib определяет классы для автоматической обработки файлов cookie HTTP. Это полезно для доступа к веб-сайтам, которым требуются небольшие фрагменты данных - файлы cookie - которые должны быть установлены на клиентском компьютере посредством HTTP-ответа от веб-сервера, а затем возвращены на сервер в последующих HTTP-запросах.

Примеры в документе показывают, как обрабатывать файлы cookie вместе с urllib :

import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
3
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: