scrapy 第三天

接着昨天的学习哈

保存到文件

Scrapy提供的 Feed Exports 可以轻松将抓取结果输出。

scrapy crawl quotes -o quotes.json

         命令运行后,项目内多了一个quotes.json 文件,文件包含了刚才抓取的所有内容,内容是JSON格式。
        另外我们还可以让每一个 Item 输出一行 JSON,输出后级为jl,为 jsonline 的缩写,命令如下

scrapy crawl quotes -o quotes.jl

或者

scrapy crawl quotes -o quotes.jsonlines

        

        Feed Exports 支持从输出格式还有很多,例如 csV、xml、pickle、marshal 等,同时它支持 印p、s3等运理拾出,另外还可以通过自定义ItemExporter 来实现其他的输出。
        例如,下面命令对应的输出分别为 csv、xml、pickle、marshal格式以及 印p远程输出:

scrapy crawl quotes -o quotes.csv
scrapy crawl quotes -o quotes.xml
Scrapy crawl quotes -o quotes.pickle
scrapy crawl quotes -o quotes.marshal
scrapy crawl quotes -o ftp://user:passeftp.example.com/ path/to/quotes.csv


其中,ftp输出需要正确配置用户名、密码、地址、输出路径,否则会报错。
通过 Scrapy 提供的 Feed Exports,我们可以轻松地将抓取结果到输出到文件中。对于一些小型项目来说,这应该足够了。


ltem Pipeline


如果想进行更复杂的操作,如将结果保存到 MomgoDB 数据库中或者饰选菜些有用的 lom,那么我们可以定义 Item Pipeline 来实现。
Item Pipeline 为项目管道。当 Item 生成后,它会自动被送到 Item Pipeline 处进行处理我们可以月Item Pipeline 来做如下操作:

  • 清洗 HTNL数据;
  • 验证爬取数据,检查爬取字段
  • 查重并丢弃重复内容;
  • 将爬取结果保存到数据库

要实现 Item Pipeline 很简单,只需要定义一个类并实现 process_ item方法即可。启用Item Pipeline后,ltem Pipeline 会自动调用这个方法。process_ item 方法必须返回包含数据的字典或 Item 对象,或者抛出 Dropltem 异常。

process_ item方法有两个参數。一个参数是item,每次Spider 生成的 item都会作为参数传递过来。另一个参数是 spider,就是 Spider的实例。

接下来我们来实现,筛掉标签大于两个的Item,打印输出到控制台,(正常是可以保存到数据库的,不过为了简单就直接打印输出了)

from itemadapter import ItemAdapter
from scrapy.exceptions import DropItem


class NewProjectPipeline:

    def process_item(self, item, spider):
        if len(item['tags']) > 2:
            return item
        else:
            return DropItem('tags <= 2')

记得要再设置中将其注册

然后我们运行爬虫,将其结果存到接送文件中

scrapy crawl quotes -o quotes_tags.jsonlines

可以看见写入文件的结tags的长度都是>=2的。

再ltem Pipeline中还有几个常用到的方法:

  • from crawler:一个类方法,用@classmethod标识,这个方法是以依赖注人的方式实现的,方法的参数就是crawler。通过crawler,我们能拿到全局配置的每个配置信息。
  • 当Spider 被开启时,这个方法被调用,主要进行了一些初始化操作。比如打开数据连接或者打开excel,这个后面会讲到
  • 当Spider 被关闭时,这个方法被调用,比如将数据库连接关闭,写入excel等

今天就到这里,主要是根据这个网站了解一下scrapy框架的流程以及一些简单的配置,明天继续!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一年级的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值