zoukankan      html  css  js  c++  java
  • Scrapy 爬虫模板--CSVFeedSpider

    这一篇文章我要讲解一下 Scrapy 爬虫模板中的 CSVFeedSpider 模板,该模板可以说是目前 Scrapy 中最简单的模板,因此这篇文章不会有太长的篇幅。CSVFeedSpider 模板主要用于解析 CSV 文件,它是以行为单位来进行迭代,每迭代一行调用一次 parse_row() 方法。该模板常用属性如下:

    1. delimiter:字段分隔符,默认英文逗号分隔;
    2. quotechar:CSV 字段中如果包含回车、引号和逗号,那么这个字段必须用双引号括起来。这个属性就是设置括起来字段所用的符号,默认为半角双引号;
    3. headers:CSV 文件标题头,该属性是一个列表。

    零、例子

    下面我们以爬取贵州省科技特派员 CSV 数据为例来看一下 CSVFeedSpider 的使用方法。

    # -*- coding: utf-8 -*-
    from scrapy.spiders import CSVFeedSpider
    from ..items import CsvfeedspiderItem
    
    
    class CsvdataSpider(CSVFeedSpider):
        name = 'csvdata'
        allowed_domains = ['gzdata.gov.cn']
        start_urls = ['http://gzopen.oss-cn-guizhou-a.aliyuncs.com/科技特派员.csv']
        headers = ['name', 'SearchField', 'Service', 'Specialty']
        delimiter = ','
        quotechar = '
    '
    
        def parse_row(self, response, row):
            i = CsvfeedspiderItem()
            i["name"] = row["name"]
            i["searchField"] = row["SearchField"]
            i["service"] = row["Service"]
            i["specialty"] = row["Specialty"]
            return i
    
        def adapt_response(self, response):
            return response.body.decode('gb18030')
    
    import scrapy
    
    
    class CsvfeedspiderItem(scrapy.Item):
        name = scrapy.Field()
        searchField = scrapy.Field()
        service = scrapy.Field()
        specialty = scrapy.Field()
    
  • 相关阅读:
    Redis 的 5 个常见使用场景
    当别人给你一个wsdl或者webservice接口时
    Java事务
    Java分布式锁的三种实现方案(redis)
    使用Redis数据库(String类型)
    超详细Redis数据库入门教程
    java对redis的基本操作(初识)
    String、StringBuffer与StringBuilder之间区别
    java正则表达式替换空格和换行符
    Linux 批量管理工具
  • 原文地址:https://www.cnblogs.com/gangzhucoll/p/12778108.html
Copyright © 2011-2022 走看看