scrapy爬虫框架中各文件功能简单介绍

本文介绍了Scrapy爬虫框架的基本组件,包括spiders中的JobboleSpider类及其parse、parse_detail方法,用于抓取网页内容;items.py中的JobboleArticleItem类和ArticleItemLoader,定义数据格式并进行加载;以及pipelines.py中的ArticlespiderPipeline,负责数据处理和存储。通过parse方法获取URL,然后使用ItemLoader填充Item,并在pipelines中进行数据持久化操作。
爬虫文件(spiders / jobbole.py):

spiders/jobbole.py

class JobboleSpider(scrapy.Spider): 爬虫类

parse() 函数

  • 解析出列表页 urls,每条 url 依次通过 Request 交给 parse_detail()(作为参数response) (如果还需要列表页每栏封面图,需要在 Request 的 meta 选项中附图片链接)
  • 如需提取下一页链接继续爬取,可再用一个 Request 交回 parse()

parse_detail() 函数

  • 方法1. 提取 parse() 获得的 url 页面具体内容(文章标题、日期等,可使用 xpath / css)
    实例化 items.py 中定义的格式类 article_item,以键值对形式给它赋值(类似字典)

  • 方法2. 使用 item loader 加载 item。实例化后用 add_css() / add_value() 赋值

两函数最终结果(Request、article_item)需要 yield
scrapy 自动把 article_item 路由到 pipelines.py 中,集中处理数据保存、去重等

数据格式文件(items.py):

items.py

class JobboleArticleItem(scrapy.Item): 格式类
  • 类似字典,只有一种类型 scrapy.Field(),格式如 title = scrapy.Field()

可在Field括号内设预处理参数,input_processor=MapCompose(自定义函数)、output_processor=Takefirst()(用 itemloader 结果是 list,需要取 list 第一个)

class ArticleItemLoader(ItemLoader): 自定义item loader
  • 可自定义 item loader 在爬虫文件使用,在里面加 default_output_processor=Takefirst(),免得在每条Field里面加预处理参数。如果不需要取第一个,则加一个 output_processor 覆盖掉。
数据存储文件(pipelines.py):

pipelines.py

class ArticlespiderPipeline(object): 系统默认pipeline

init() 函数

  • 做存储的预备工作,如打开json文件、连接mysql数据库等,为process_item()做准备

process_item() 函数

  • 有 item 参数,可以接收路由到的 article_item
    (可在里面自定义数据的处理)

spider_closed() 函数

  • 数据存储完成后,关闭文件或连接

也可以自定义新的 pipeline(管道),把 item 保存到 json 文件或 mysql 数据库,不过需要修改 settings.py 的ITEM_PIPELINES 参数值。格式: ‘项目名.pipelines.管道名’ : 数字
数字越小的管道越早进入(如先进入图片存储管道,在结果 item 中增加图片路径值;再进入存储管道,把最终 item 存到 json 文件或 mysql 数据库 [ 需要 pip install mysqlclient,pipelines.py 中 import MySQLdb)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值