, если вы хотите, чтобы исходное тело было независимо от типа содержимого, вы должны использовать request.get_data()
, потому что request.form
преобразуется в формат werkzeug.ImmutableMultiDict
.
Используйте Scrapy.
Это - скрученный - базирующаяся платформа поискового робота. Все еще при тяжелой разработке, но это уже работает. Имеет многих положительных героев:
Пример кода для извлечения информации обо всех файлах потока, добавленных сегодня в сайт mininova потока, при помощи селектора XPath на возвращенном HTML:
class Torrent(ScrapedItem):
pass
class MininovaSpider(CrawlSpider):
domain_name = 'mininova.org'
start_urls = ['http://www.mininova.org/today']
rules = [Rule(RegexLinkExtractor(allow=['/tor/\d+']), 'parse_torrent')]
def parse_torrent(self, response):
x = HtmlXPathSelector(response)
torrent = Torrent()
torrent.url = response.url
torrent.name = x.x("//h1/text()").extract()
torrent.description = x.x("//div[@id='description']").extract()
torrent.size = x.x("//div[@id='info-left']/p[2]/text()[2]").extract()
return [torrent]
Проверьте HarvestMan, многопоточный поисковый робот, записанный в Python, также поглядите к модуль spider.py .
И здесь можно найти, что примеры кода создают простой поисковый робот.
Я использовал Ruya и нашел его довольно хорошим.
Another simple spider Uses BeautifulSoup and urllib2. Nothing too sophisticated, just reads all a href's builds a list and goes though it.