scrapy爬虫起步(1)--第一个爬虫程序

目标:使用scrapy抓取豆瓣小组的组名

1. 新建scrapy工程

新建工程文件夹,命令行cd到该目录下,用下面的命令新建一个scrapy工程
scrapy startproject dmoz
新建好的工程目录结构为:

E:\PYTHON WORKSPACE\DOUBAN
│  scrapy.cfg
└─douban
    │  items.py
    │  pipelines.py
    │  settings.py
    │  __init__.py
    └─spiders
            __init__.py

简要说下几个文件,
- items:用来定义要抓取的内容;
- pipelines:用来对内容进行处理,包括过滤、输出等;
- setting:不用说了,配置文件

2. 定义item:

item当然是在items.py里定义了,我们只抓取小组的名称,因此定义一个groupname就可以了,很简单

from scrapy.item import Item, Field

class DoubanItem(Item):
    groupName = Field()

3. 定义pipeline

这里定义pipeline是将获取到的组名输出到文件,由于默认输出是unicode码,转换为中文需要再处理下。

import codecs
import json

class DoubanPipeline(object):
    def __init__(self):
        self.file = codecs.open('data.json', 'wb', encoding="utf-8")

    def process_item(self, item, spider):
        line = json.dumps(dict(item))
        self.file.write(line.decode("unicode_escape")+"\r\n")
        return item

4. 爬虫内容

这是爬虫的主体了,在spiders文件夹下新建一个python文件“groupSpider.py”,先看内容吧

# coding=utf-8
__author__ = 'Jeffee Chen'

from scrapy.contrib.spiders import CrawlSpider
from douban.items import DoubanItem

class GroupSpider(CrawlSpider):
    name = "Douban"
    allowed_domains = ["douban.com"] 
    start_urls = ["http://www.douban.com/group/explore?tag=%E7%A4%BE%E7%A7%91"]

    def parse(self, response):
        item = DoubanItem()
        sel = response.xpath("//div[@class='group-list']/div[@class='result']")
        for s in sel:
            item["groupName"] = s.xpath("div[@class='content']/div[@class='title']/h3/a/text()").extract()
            yield item

这只是一个很简单的爬虫程序,只抓取当前页面,不进行链接追踪,跑一下试试吧:
scrapy crawl Douban
最后一个参数就是我们的spider文件中定义的name,根据pipelines的定义,抓取到的数据被输出到根目录下的data.json文件

你可能感兴趣的:(Scrapy)