爬虫之 scrapy 框架总结

写在前面的话: 最近重新学了一下scrapy框架,之前没学好,现在总结一下…以便以后重装不需要重新找资料

一. 安装

需要三个库 lxml, twist, pywin32 一般前两个都有

  • pip install pypiwin32 (有whl文件)

如果有问题输入下面这句

  • pip install -I cryptography

二. 文件类型

1. items.py 存放数据模型

三个方法最常用

  • open_spider(self, spider): 爬虫打开的时候执行
  • process_item(self, item, spider): 当爬虫有item传过来的时候会被调用
  • close_spider(self, spider): 爬虫关闭的时候执行

注意激活pipline,在 setting.py 中设置

2. middlewares.py 存放各种中间件的文件

3. pipelines.py 存储

4. setting.py 配置信息

  1. ROBOTSTXT_OBEY = False 肯定不服从呗
  2. headers 添加 User-Agent
  3. ITEM_PIPLINES

三. 流程

  • scrapy startproject name 开始一个项目
  • cd name 切换到项目文件夹
  • scrapy genspider filename “域名”

response 是一个 HTMLResponse 对象,可以用 xpath 提取数据,提取出来需要用 get()getall() 获取用 yield 返回,或者用 列表存储 再返回

四. 返回对象

1. JsonItemExporter

每次把数据添加到内存中,最后统一写到磁盘里。最后存储的是一个列表,满足json规则,可以直接转换为DataFrame类型进行数据分析,便于操作。劣势在于数据量越大,内存消耗越严重。

2. JsonLinesItemExporter

每次调用 export_item() 时存储item到硬盘,优势在于处理数据直接存储到硬盘,不占用内存,数据也较安全。劣势在于每个字典是一行,文件不满足json规则。

五. CrawlSpider

命令:scrapy startproject -t crawl name

需要使用 RuleLinkExtracter。决定爬虫的根本设置

  1. allow:设置规则的方法,限制想要的url, 用正则表达
  2. follow:爬取当前页面,满足allow,且设置为True则继续爬取, 否则设置为False
  3. callback:url对应页面知识为了获取更多url,并不需要具体数据
from scrapy.spiders import CrawlSpider

继承的是 CrawlSpider 这个类
可以方便的爬取正则规定的url。

猜你喜欢

转载自blog.csdn.net/q18421896/article/details/89881310