вторник, 12 января 2010 г.

Полезные модули.

Нашел под python много интересных модулей.

  1. Markovgen - генерация текста, цепями Маркова, не помню где взял, думаю автор не обидится если не укажу ссылку.

  2. ClientForm- классная вещь, позволяет автоматически формировать POST-запрос для html-форм на странице. На том же сайте есть и mechanize, вроде как еще одна приблуда типа urllib-ов и httplib-ов, с отличием, что эмулирует браузер. Не разбирался с ним, помню только, что когда запустил пример с сайта в сниффере увидел, что скрипт полез искать robots.txt.

  3. Beautiful Soup -модуль для работы с html-кодом страницы. Пользовался им, когда не знал про ClientForm, для того, чтобы выдернуть все данные формы.

  4. PIL -модуль для работы с изображениями, пользовался пару раз, для того, чтобы склеить капчу и для того, чтобы уникализировать заливаемые изображения.

  5. libgmail - как-то наткнулся на него, пару раз попробовал приконнектиться к почте, но безуспешно. Модуль, конечно, МастХэв, но, то ли я что-то упустил, то ли он устарел.

  6. wodrpesslib - когда-то писал скрипт, для автопостинга в Wordpress, наткнулся на этот модуль, к сожалению он работает только через xmlrpc, что не всегда приемлимо.

9 комментариев:

  1. Имхо, только PIL их этого стоящая штука. Остальное лишнее при работе через POST/GET.

    ОтветитьУдалить
  2. Ну вот ClientForm далеко не лишнее, если необходимо написать скрипт, который будет заполнять формы не на определенном сайте, а на определенном движке(например автонаполнение блогов на движке wordpress), то без ClientForm будет тяжело. Он и все поля выдернет, и запрос сформирует, нужно только указать значения основных полей. Я не знаю, может есть что-то лучше, я не находил.

    ОтветитьУдалить
  3. ClientForm в связке с mechanize'ом - отличная штука!
    из механайза тебе нужен, в основном, лишь Browser():

    # -*- coding: cp1251 -*-
    from mechanize import Browser # импортим браузер
    br = Browser() # присваиваем класс Браузер из модуля механайз
    #br = Browser().set_handle_robots(False) # Те же яйца, но без таскания robots.txt !!!

    result = br.open('http://python4seo.ru/?p=104') # на всякий случай, помещаем ответ в переменную
    for form in br.forms(): # можно глянуть, какие у нас есть формы, но это пригодится только для отладки
    print form

    br.select_form(predicate=lambda form:'captcha' in str(form)) # обязательно нужно выбрать
    # форму перед наманством над ней
    # это можно сделать, как по её имени,
    # если оно есть, так и по её номеру,
    # или как-то ещё.. Или, как в моём
    # примере - по содержащейся в этой
    # форме строки. В данном случае,
    # у нас ТОЛЬКО в форме комментария есть
    # слово captcha.
    br["author"] = u'Крайст' # заполняем поля формы
    br["email"] = u'Jezuz_Chrizt@mail.ru' # палюсь =)
    br["url"] = u'http://jezuz-chrizt.livejournal.com' # настоящий спамер должен знать, что рекламит =)
    br["comment"] = u'Привет, я спам, робот, говнокамент, виагра, сиалис и гейское азиатское порно )))'
    # классический говнокамент ( "гавноспамент"(c)noxon.su )
    # капчу профукали, и всё такое, но сабмитим
    br.submit() # опять же, сабмит можно присвоить и какой-нить переменной, чтобы получить ответ в неё:
    # subm_respon = br.submit()

    ОтветитьУдалить
  4. Ах, да..
    Только закончил делать скрипт для авторазмещения ссылок биржи Setlinks (если чо, могу дать рефку - не лишним будет реф =)) на блогах ЖЖ.
    Заёпся, честно говоря ) Получилось 12 Кб не до конца отлаженного, но вполне рабочего кода по интерфейсам.
    У сетлинкс - какой-то своё галимый xml-фейс, а у жж - xml-rpc. С моими пузатыми жжшками вполне неплохо проходит тема )

    На моём Asus Eee PC 1000H с вроде бы мегабитным инетом, 35 жжшек пробегается за 3 с лишним минуты.

    Вот, кстати, для этого кода я и хотел надрочиться делать многопоточность, да что-то никак в мой мозг это не лезет :(

    ОтветитьУдалить
  5. Может кто в курсе, как с помощью ClientForm или mechanize заполнить обыкновенный в форме (как например в случае с рекапчей)? Они видят только input теги, а textarea напрочь игнорируют.

    ОтветитьУдалить
  6. А вы не находили модуля на python для парсинга поисковых фраз из логов Apache или nginx?

    ОтветитьУдалить
  7. Не, не интересовался таким.

    ОтветитьУдалить
  8. есть еще spynner

    он в отличи от механайз умеет работать с js, так как spynner надстройка над вебкитом

    ОтветитьУдалить
  9. Ух, интересно, надо будет глянуть, спасибо.

    ОтветитьУдалить