Архив ‘Seo’ Категории
grab.spider tricks.
1) Дефолтный valid_status для всех заданий. Нужно переопределить метод valid_response_code, например таким образом:
def valid_response_code(self, code, task): return True
В данном примере все ответы будут считаться валидными.
2) Список стартовых урл, initial_urls, может оказаться просто ненужным. Чтобы не делать лишнее действие, можно запускать spider не через task_initial, а через task_generator:
class MainSpider(Spider): #initial_urls = ['http://www.google.com/'] def task_generator(self): url = "http://www.google.com/" yield Task(name='page', url=url)
Это один из способов, но далеко не единственный.
Генерация xml карты.
комментарии: 3
Иногда требуется сгенерировать xml карту для заданных ссылок. Сначала делал это за счет метода строки format, но вот решил попробовать модуль для работы с xml и набросал простенькую функцию:
import StringIO from xml.sax.saxutils import XMLGenerator def create_sitemap(cnagfreq,priority,*links): st = StringIO.StringIO() g = XMLGenerator(st,encoding="UTF-8") g.startDocument() g.startElement('urlset', {'xmlns':"http://www.sitemaps.org/schemas/sitemap/0.9"}) for lnk in links: g.characters("\n") g.startElement("url", {}) g.characters("\n") g.startElement("loc", {}) g.characters(lnk) g.endElement("loc") g.characters("\n") g.startElement("changefreq", {}) g.characters(cnagfreq) g.endElement("changefreq") g.characters("\n") g.startElement("priority", {}) g.characters(priority) g.endElement("priority") g.characters("\n") g.endElement("url") g.characters("\n") g.endElement("urlset") g.endDocument() return st.getvalue() lst = ["http://ya.ru/{0}.html".format(x) for x in xrange(5)] print create_sitemap("daily","0.8",*lst)
Пример скрипта.
комментарии: 9
Решил выложить видео работы простенького скрипта для регистрации акков в ЖЖ. Для работы этого скрипта необходимо установить Python и PyCurl. После этого можно запускать скрипт, предварительно указав нужные параметры (ключ от антикапчи, количество потоков, адрес почтового ящика и т.д.):
Перенаправление почты
комментарии: 2
Довольно часто для регистрации необходимо подтвердить её, перейдя по ссылке в письме. Есть несколько решений этой проблемы:
- Использовать сервисы типа http://mailforspam.com
- Использовать точки гмейла. tothing@gmail.com = to.thing@gmail.com
- Снять хостинг, привязать домен и сделать перенаправление всех писем этого домена на один почтовый ящик.
Собственно, остановимся на третьем пункте, выбираем себе хостинг с cpanel, например вот этот(2$ за месяц).
Добавляем домен(ы) как это обычно делается:
Создадим почтовый ящик:
И настроим адрес почты по умолчанию:
В итоге вся почта отправленная на наш домен (nkbook.ru в моем случае) будет пересылаться на один адрес(admin@nkbook.ru):
Полезные модули.
комментарии: 9
Нашел под python много интересных модулей.
- Markovgen — генерация текста, цепями Маркова, не помню где взял, думаю автор не обидится если не укажу ссылку.
- ClientForm- классная вещь, позволяет автоматически формировать POST-запрос для html-форм на странице. На том же сайте есть и mechanize, вроде как еще одна приблуда типа urllib-ов и httplib-ов, с отличием, что эмулирует браузер. Не разбирался с ним, помню только, что когда запустил пример с сайта в сниффере увидел, что скрипт полез искать robots.txt.
- Beautiful Soup -модуль для работы с html-кодом страницы. Пользовался им, когда не знал про ClientForm, для того, чтобы выдернуть все данные формы.
- PIL -модуль для работы с изображениями, пользовался пару раз, для того, чтобы склеить капчу и для того, чтобы уникализировать заливаемые изображения.
- libgmail — как-то наткнулся на него, пару раз попробовал приконнектиться к почте, но безуспешно. Модуль, конечно, МастХэв, но, то ли я что-то упустил, то ли он устарел.
- wodrpesslib — когда-то писал скрипт, для автопостинга в WordPress, наткнулся на этот модуль, к сожалению он работает только через xmlrpc, что не всегда приемлимо.