Scrapy: парсер блога

категория: Scrapy
Еще один прекраснейший фреймворк, написанный на python, для написания парсеров - Scrapy. Не так давно я на примере своего блога написал парсер с использованием BeautifulSoup, посмотрите для сравнения Парсер моего блога Так вот, Scrapy - это просто машина для любых задач, я только ознакомился и почувствовал эту мощь)) Описывать нюансы не буду - просто пройдите туториал и все поймете, просто залью свой код. И получилось в разы проще выгрузить инфу с моего блога и записать в csv файл запускаем:
scrapy crawl scrapy_test -o file.csv -t csv
код scrapy_test:
#! coding: utf-8
__author__ = 'acman'
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
from scrapy.item import Item, Field
#
#
class ScrapyTestItem(Item):
    title = Field()
    category = Field()
    url = Field()
    text = Field()
#
#
class ScrapyTestSpider(CrawlSpider):
    name = "scrapy_test"
    allowed_domains = ["www.acman.ru"]
    start_urls = ["http://www.acman.ru/blog/"]
#
    rules = (
        Rule(LinkExtractor(allow=(r'/blog/\d+')), 
            callback='parse_item', follow=True),
    )
#
    def parse_item(self, response):
        self.log('%s' % response.url)
        item = ScrapyTestItem()
        item['title'] = response.xpath('//h2[@class]/a/text()').extract()
        item['category'] = response.xpath('//h3/a/text()').extract()
        item['text'] = response.xpath(
            '//div[@class="entry"]//p | //pre/code').extract()
        item['url'] = response.url
        return item


blog comments powered by Disqus