专栏首页喵叔's 专栏Scrapy 爬虫模板--CSVFeedSpider

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 = '\n'

    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()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C# 事件

    使用委托的时候通常会出现两个角色,分别是广播者和订阅者。广播者包含委托字段,通过调用委托来决定何时进行广播。订阅者是方法目标的接收者,订阅者决定什么时候开始监听...

    喵叔
  • 一、了解Scrapy

    Scrapy 是一个用于爬取网站并提取结构化数据的高效爬虫框架,它可以用于各种应用程序/项目,比如数据挖掘、信息处理和档案处理等。最初设计 Scrapy 是用来...

    喵叔
  • Scrapy 爬虫模板--CrawlSpider

    从这篇文章开始,我将利用三篇文章分别讲解 Scrapy 爬虫模板。 Scrapy 爬虫模板包含四个模板:

    喵叔
  • python语法基础-初始化/继承

    写了一些程序,基本上都是直接def函数 然后在main方法中 调用 但是在一些应用程序中 会有基本语法的使用(初始化,继承)

    py3study
  • 生产者消费者模式的三种实现方式

    用户1637228
  • Python 抓取数据存储到Redis中的操作

    redis是一个key-value存储结构。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(...

    砸漏
  • golang--redis基本介绍

    redis(remote-dictionary-system)即远程字典服务器,是NoSQL数据库:

    西西嘛呦
  • Basic4android(B4A)自定义XML样式主题

    巴西_prince
  • python学习笔记6.3-类的属性函数(@property)

    属性函数(@property) 在对象中两个很重要的元素就是属性和方法,在调用的时候两者是有区别的。 class People: def __ini...

    锦小年
  • EMA算法的C#实现

    EMA表示的是指数平滑移动平均,其函数的定义为Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期Y值。 求X的N日指数...

    张善友

扫码关注云+社区

领取腾讯云代金券