zoukankan      html  css  js  c++  java
  • 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)) + " "
            self.file.write(line)
            return item

    5 启动爬虫
    scrapy crawl  dmoz   

  • 相关阅读:
    oracle序列的使用
    oracle学习
    项目部署的一些问题
    mybatis的resultMap与resultType的区别
    react-router-dom路由switch使用
    Json.parse 和Json.stringfy()用法
    页面中js按顺序加载完全的方法
    伪数组转为真数组
    import和export的作用
    Object.entries()
  • 原文地址:https://www.cnblogs.com/mingzhang/p/7597640.html
Copyright © 2011-2022 走看看