Форум сайта python.su
Я это просто тут оставлю…
Решил написать скрипт, который ломится на сайт с куками, логинится за меня, скачивает страничку с инфой (например, личная новостная лента), ну и выбирает из неё самое вкусненькое. 5 часов убил, гугля по сабжу, соединяя в кучу кусочки кода (в питоне я не гуру, только-только с объектами разбираюсь). Кто в и-нет по прокси лазает пропишите в словарь ProxyHandler({}) в соответствующем месте (тут уж погуглите). Значит, чтоб может кто другой сэкономил эти 5 часов - выложусь тут.
Сначала выясним, какие параметры POST передаёт форма на сервер, разбираем html-файл, все аттрибуты name:value собираем в словарь.
url = "http://site.ru/main/login.php"
data = {"login":"VasyaPupkin","pass":"12345","cnt":"/members/index.php"}
# аттрибут cnt в моём случае был type="hidden"
import urllib, urllib2, cookielib
enc_data=urllib.urlencode(data)
cj = cookielib.CookieJar()
proxy_handler = urllib2.ProxyHandler({})
opener = urllib2.build_opener(proxy_handler, urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
# конвертнули аттрибуты, подготовили кукисняк, прокси, ещё чё-то
req=urllib2.Request(url)
r=urllib2.urlopen(req,enc_data)
# ну и выкачали веб-страничку, далее каждый извлекает свой PROFIT
print r.read()
Отредактировано (Окт. 22, 2009 09:23:06)
Офлайн
Похвально.
Тут мы ещё обсуждали варианты эмуляции браузера:
http://python.su/forum/viewtopic.php?id=5323
Офлайн
С гугль-кодом как-то не могу разобраться, не совсем понимаю суть этого сервиса.
Про эмуляцию определенных браузеров тоже встречал куски кода, но, поскольку в десятке протестированных сайтов работает на ура и без него, решил не усложнять код. Бывает, сайты разным браузерам дают слегка отличающиеся документы, но ПРОФИТовый контент остаётся неизменным (оставим за бортом те эксклюзивные случаи, когда Микрософт байкотировал Оперу, которая в ответ сделала версию программы, открывающую преднамеренно сильно искаженный в плане контента и дизайна сайт Микрософта).
Офлайн
С гугль-кодом как-то не могу разобраться, не совсем понимаю суть этого сервиса.Хм, и что, википедия тоже не дала просветления?
Офлайн