python 网络爬虫框架scrapy使用说明

1 创建项目
scrapy startproject tutorial

2 定义Item
import scrapy
class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()
paser完后的数据保存到item列表,在传给pipeline使用

3 编写第一个爬虫(Spider), 保存在 tutorial/spiders 目录下的 dmoz_spider.py, 爬虫要根据文件名来启动。
import scrapy

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
            item = DmozItem()
            item['title'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()
            item['desc'] = sel.xpath('text()').extract()
            yield item
            
start_urls设置要爬的URL列表
parse成员函数在爬完一个页面后调用从页面里提取信息,保存到之前定义的item字典列表里。注意DmozItem为第二步定义的类

4 pipeline
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。在settings.py里定义pipeline处理顺序。
pipline处理数据,同时决定是否将数据传入下一个pipeline

import json

class JsonWriterPipeline(object):

    def __init__(self):
        self.file = open('items.jl', 'wb')

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

5 启动爬虫
scrapy crawl  dmoz   

posted @ 2017-09-26 16:54  mingzhang  阅读(279)  评论(0编辑  收藏  举报