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

本文介绍了如何使用Scrapy框架创建一个简单的爬虫,目标是抓取豆瓣小组的组名。首先新建scrapy工程,然后定义item以指定抓取内容(仅组名),接着设置pipeline来处理内容并将其保存为中文格式,最后编写爬虫代码,运行后数据将保存在data.json文件中。
摘要由CSDN通过智能技术生成

目标:使用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文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值