2009/07/21

urllib2 - начало

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
В следующей заметке, наверно, расскажу про регулярные выражения, чтобы из полученных страничек можно было извлекать нужные данные.

5 comments:

  1. Здраствуйте!

    Сама програмирую на Шарпе.

    Тут дали задание..
    На питоне написать скрипт.
    В питоне 0, а зделать нужно к вторнику :(

    Задание:

    1. Есть текстовый файл со списком ссылок.

    2. Скрипт должен скачивать текст со страниц в текстовый файл без тегов (каждая ссылка в отдельный файл).

    Зарание благодарю, Алиса!

    PS.
    Порекомендуйте пожалуйста литературу по пайтону для новичков!
    Думаю будет не одна такая моя задача! Надо учиться!
    Спасибо!

    ReplyDelete
  2. Алиса,

    Вы мне предлагаете написать этот скрипт за вас или чем-то помочь? Он несложный, напишите мне на почту, мое имя на гмейле - iv.inside

    По питону рекомендую для начала книжку http://www.python.ru/files/book-ods.pdf
    После прочтения и использования http://www.python.org/doc/ как справки можно программировать практически всё что угодно.

    ReplyDelete
  3. Это все есть на просторах инета, может что нибудь поинтереснее??? Например работа с куки, редиректы?

    ReplyDelete
  4. Спасибо большое! "python отправка формы" - нашел вас по этому запросу) Надо сделать любительскую прогу автозаполнения полей. Весь день искал эту доходчивую статью) А если у меня Хром, а не Лисица, какой плагин использовать?

    ReplyDelete