首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫框架Scrapy总结笔记

爬虫框架Scrapy总结笔记

作者头像
木野归郎
发布2021-03-11 15:10:11
4280
发布2021-03-11 15:10:11
举报
文章被收录于专栏:share ai happinessshare ai happiness

前言

由于工作需要,学习一下爬虫框架,在网上看了别人的笔记和教学视频,想总结一下便于以后复习用,然后和大家分享一下。

我的总结大概分为四步:

  1. Scrapy的整体架构
  2. 使用Scrapy框架的一个完整流程
  3. Scrapy框架的安装
  4. 使用Scrapy实现爬虫

scrapy的整体架构

  • spiders:自己写的爬虫,发送一个请求,那个请求的数据该怎么解析,都是在这里边完成。
  • scheduler:如果有重复url,这个调度器可以完成,相当于里边有个队列,来一个url生成一个request,放到队列中,如果再爬就从队列中去取,已经实现。
  • downloader:下载器,可以从互联网上下载下来,已经实现。
  • item pipelines:管道,用来去存储爬取的数据,该如何存储、存储到哪里还是由开发者写。
  • scrapy engine:负责数据和信号在不同模块之间的传递,已经实现。
  • Downloader middlewares:可以自定义下载,设置代理,设置请求头等,根据需要实现。
  • spider middlewaresspider:可以自定义requests请求和response过滤,根据需要实现。

使用Scrapy框架的一个完整流程

1、先从spiders发送一个请求,请求不会马上发送出去

2、发送给scheduler调度器,调度器把url生成一个request对象,存储到队列当中

3、engine引擎不断从调度器中取请求,拿到这个请求

4、将请求发送给Downloader下载器,下载器把数据下载下来,把数据返回给引擎

5、数据返回给spiders,进行一系列分析,提取出想要的数据,再把数据发送给引擎

6、引擎把数据发送给pipelines

在引擎和scheduler、引擎和Downloader之间可以使用中间件,可以在发送过程中间做一些操作。

关于中间件的详解后台回复scrapy中间件,可以获取。

Scrapy框架的安装

这里是在Windows下的安装:

需要安装4个依赖库分别是

  • lxml(这个最重要),使用pip命令安装

pip3 install lxml 若没有报错,则安装成功,如果报错提示缺少libxml2 库,可以使用wheel文件进行安装 libxml2

libxml2 https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

  • pyOpenSSL

需要在官网下载wheel文件 pyOpenssL

pyOpenssL https://pypi.org/project/pyOpenSSL/#files

下载后使用

pip3 install pyOpenSSL-17.2.0-py2.py3-none-any.whl

安装即可

  • Twisted

同理,需要在官网下载wheel文件 Twisted,但是有一件事,一定要记得在控制台下输入python,查看你的电脑版本和python版本,然后在上面的地址中下载对应的wheel文件

Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

然后使用命令安装

pip3 install Twisted-17.5.0-cp36-cp36m-win_amd64.whl

  • PyWin32

在官网下载对应版本的安装包双击安装即可

pywin32 https://sourceforge.net/projects/pywin32/files/

在依赖包全部安装成功前提下安装Scrapy框架,使用pip命令

pip3 install Scrapy

使用Scrapy实现爬虫

创建scrapy命令:

创建项目:scrapy startproject xxx 进入项目:cd xxx #进入某个文件夹下 创建爬虫:scrapy genspider xxx(爬虫名) xxx.com (爬取域) 生成文件:scrapy crawl xxx -o xxx.json (生成某种类型的文件) 运行爬虫:scrapy crawl XXX 列出所有爬虫:scrapy list 获得配置信息:scrapy settings [options]

spiders:项目中的爬虫放在里边

items.py:所有爬取数据的模型,这样就不使用字典模型了,比如爬取的数据包括 作者、时间、内容,所有这些东西可以记录在这里。

middlewares:爬虫中间件

pipelines:用来处理爬取下来的数据的

setting.py:设置配置的,比如可以设置请求头,是否开启cookie,下载之前是否延迟等等。

scrapy.cfg: 项目的配置文件

容器(items)的定义,容器不一定是一开始全部都定义好的,可以跟随项目的更新一点点向里面添加。

一个入门爬虫栗子:

import scrapy
class DmozSpider(scrapy.Spider): # 继承Spider类
    name = "dmoz" # 爬虫的唯一标识,不能重复,启动爬虫的时候要用
    allowed_domains = ["dmoz.org"] # 限定域名,只爬取该域名下的网页
    start_urls = [ # 开始爬取的链接
        "https://www.baidu.com/"
    ]
    def parse(self, response):
        filename = response.url.split("/")[-2] # 获取url,用”/”分段,获去倒数第二个字段
        with open(filename, 'a') as f:
            f.write(response.body) # 把访问的得到的网页源码写入文件

代码中的parse方法有这么两个作用: 1.负责解析start_url下载的Response 对象,根据item提取数据(解析item数据的前提是parse里全部requests请求都被加入了爬取队列)。 2.如果有新的url则加入爬取队列,负责进一步处理,URL的Request 对象。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OnlyCoding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档