urllib2 - библиотечка, с помощью которой удобно обрабатывать веб-странички, заполнять веб формы, обрабатывать куки, соединяться через прокси и прочее.
Простейший пример:
import urllib2
response = urllib2.urlopen('http://ivinside.blogspot.com/')
print response.read()
Эта программа показывает на экран html-кодесы данного блога. Но не всегда можно получить содержимое странички, например, результаты поиска в Google таким образом не посмотришь, ибо он фильтрует по строке
User-Agent всякие нежелательные приложения, в питоне по умолчанию она что-то типа "Python-urllib/2.5".
С помощью следующего кода выводим на экран результат поиска в гугле по запросу "ivinside.blogspot.com", прикидываясь Internet Explorer под Vista:
import urllib2
search = 'ivinside.blogspot.com'
headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'}
req = urllib2.Request("http://www.google.ru/search?q=" + search + "&start=0&ie=utf-8&oe=utf-8", None, headers)
response = urllib2.urlopen(req)
print response.read()
Ну, и напоследок сегодня, как заполнять веб-формы. Возьму для примера веб-сервис
whois. Как посмотреть какие параметры при этом передаются в запросе POST? Я смотрю плагином
Live HTTP headers для Firefox и считаю его приемлемым. Итак, заполняем первую форму вручную, нажимаем кнопочку и смотрим в окно плагина. Там, среди всего прочего, будут интересующие нас параметры:
Host=whois.ripn.net&Whois=test.ru
Добавим их как параметры функции, предварительно закодировав, как того требует спецификация:
import urllib
import urllib2
headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'}
values = {'Host' : 'whois.ripn.net', 'Whois' : 'test.ru'}
data = urllib.urlencode(values)
req = urllib2.Request('http://www.ripn.net:8082/nic/whois/whois.cgi', data, headers)
response = urllib2.urlopen(req)
print response.read()
Ок, получили страничку, где содержится информация про домен test.ru
В следующей заметке, наверно, расскажу про регулярные выражения, чтобы из полученных страничек можно было извлекать нужные данные.