【初始scrapy框架上】——全栈开发——如桃花来

scrapy框架的介绍:

  • Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛
  • 框架就是把之前简单的操作抽象成一套系统,这样我们在使用框架的时候,它会自动的帮我们完成很多工作,我们只需要完成一部分
  • scrapy使用了Twisted异步网络框架,加快我们的下载速度
  • 在各种请求的时候,它底层的逻辑是多线程执行,所以请求效率非常高(但要小心,过快的请求很容易被封ip)
  • 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便,框架是代码的半成品,提高效率

scrapy第三方包的下载:

  • pip install scrapy -i 换源安装ip地址
  • pip install pypiwin32 windows电脑最好下载一下

安装报错处理方案:

报错内容:
     包含Twisted的异常:指的是这个库安装报错,无法通过pip进行安装

执行流程:
	1.访问https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
	2.找到对应的解释器下载版本
		Twisted‑20.3.0‑cp37‑cp37m‑win_amd64.whl  这是python3.7的版本
		Twisted‑20.3.0‑cp38‑cp38‑win_amd64.whl   这是python3.8的版本
	3.下载之后,在该文件路径打开CMD窗口
	4.执行pip install Twisted‑20.3.0‑cp...  即可
	5.继续执行pip install scrapy

常见的换源网址:

豆瓣:http://pypi.douban.com/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
华为云:https://repo.huaweicloud.com/repository/pypi/simple
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中科大:https://pypi.mirrors.ustc.edu.cn/simple/

scrapy的图示原理:

在这里插入图片描述

或者:

在这里插入图片描述

或者:

在这里插入图片描述

scrapy原理流程:

# 1.spider将起始的地址请求对象由引擎(engine)传给调度器(Scheduler)存放排列入队<去重,过滤重复对象>,当引擎需要时传递给引擎(有时候会无法去重)
# 2.引擎将请求对象传递给下载器(发送请求),传递经过下载中间件(随机ua,添加代理等)
# 3.下载器获取的响应response交还给引擎由其交给spider
	下载器--引擎:经过下载中间件:拦截响应对象(数据预处理,状态码异常校验,请求对象重构)
	引擎--spider:经过爬虫中间件:自定扩展和操作引擎和Spider中间通信的功能组件
							(比如进入Spider的Responses;和从Spider出去的Requests)
# 4.spider解析响应
	@解析需要继续跟进的地址url:构造请求对象,传递给引擎,由其交给调度器存放入队(相当于从老url里面取出新的url,然后接着发送请求)
	@解析出item中定义的数据:传递给引擎,由其交给管道(pipeline),保存
# 5.item文件是用来数据建模的,所有保存的数据都需要先在item文件中进行数据建模,变量名必须相同,否则就会报错。
# 6.传回的响应全都是用response这个变量来接收,它的底层逻辑是多任务,所以说我们直接用就可以了,框架会自行处理

详细介绍:

  • crapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  • Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
  • Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
  • Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
  • Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
  • Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
  • Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

流程描述:

1.爬虫中起始的url构造成 request对象--->爬虫中间件-->引擎--->调度器

2.调度器把 request--->引擎-->下载中间件-->下载器

3.下载器发送请求,获取 responsel响应-->下载中间件-->引擎-->爬虫中间件--->爬虫

4.爬虫提取url地址,组装成 request对象-->爬虫中间件-->引擎--->调度器,重复步骤2

5.爬虫提取数据--->引擎--->管道处理和保存数据

scrapy中的三个内置对象:

request请求对象:由 url method post data headers等构成

response响应对象:由 url body status headers等构成

item数据对象:本质是个字典

scrapy中每个模块的作用:

在这里插入图片描述

Scrapy项目搭建:

Scrapy是作为一个项目启动的,要启用指令创建,里面会为你自动搭建好基础框架。

# 点开pycharm下方的Terminal
# 新建scrapy项目
# 爬虫项目创建
    # scrapy startproject 爬虫项目名
    # cd 爬虫项目名文件夹
    # scrapy genspider 爬虫名称 爬虫的域
# 爬虫名   开启/运行 爬虫的时候,需要通过爬虫名称开启爬虫
# 爬虫域   域名,告诉爬虫,我这个项目,只爬取属于什么域的内容
注意:爬虫项目名  与  爬虫名 不可同名
""
1.项目文件下的项目名下的py文件就是你要书写的爬虫文件 
2.items.py用于数据建模, 爬取的目标内容必须在此建模  (不要写中文注释)
3.middlewares.py  是下载模块   是爬虫中间件和下载中间件  暂时不用
4.pipelines.py  做管道保存,所有数据保存的代码写在此处,框架要求这样
5.settings.py  是配置文件  默认20行 roboots协议是开启的,启动项目后先设为FALSE,或者直接注释掉    后面如果要开启管道的时候需要在66行开启
6.settings和items里面不要写中文注释
""

详情:

1.

切换到你要创建项目的指定文件夹下

在这里插入图片描述
2.

执行创建命令

scrapy startproject 爬虫项目名

在这里插入图片描述

3.

继续cd切换到爬虫项目名下的文件下路径,然后创建爬虫名爬虫域

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:

  • 爬虫项目名与爬虫名不可同名
  • 爬虫域就是https后面和包括com的那一串
  • 很多按钮、跳转的网页都会在爬虫域下面进行,所以说域跟网址是不一样的

scrapy的爬虫文件说明 :

我们举个例子用来说明

这是在lianjia_spider.py下面自动生成的代码
import scrapy


class LianjiaSpiderSpider(scrapy.Spider):
#下方都是自动创建的
	#爬虫名
    name = "lianjia_spider"
    #爬虫域
    allowed_domains = ["hz.lianjia.com"]
    #起始url
    start_urls = ["http://hz.lianjia.com/"]

    def parse(self, response):
    #我们写爬虫逻辑就写在parse下面,名字不可以改
       print(response.text)

- 记得要修改起始url
start_urls ["https://hz.lianjia.com/zufang/"]
- 将租房界面作为起始url
- 我们写爬虫逻辑就写在parse下面
- 运行之后,会交给下载器发送请求。然后得到的响应会返回给response

给headers增加对应值:

手动拿到的数据需要赋值到settings里面

在这里插入图片描述
或者:
在这里插入图片描述

运行框架的两种方式:

第一种命令启动:

  • 切换到项目路径里面的文件夹路径
  • 输入指令:scrapy crawl 爬虫.py的名称

在这里插入图片描述

前面会有一些启动的日志文件

忽略日志文件:

输入命令:

#后方加入一个--nolog即可
scrapy crawl lianjia_spider --nolog

第二种命令启动(推荐):

  • 在自动创建的文件夹下方创建一个start.py文件,跟cfg文件同级别

在这里插入图片描述

在start文件下方写入模块:

from scrapy import cmdline
#一定要以列表形式传入
cmdline.execute(["scrapy","crawl","lianjia_spider","--nolog"])

直接在start文件下运行就可以了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

如桃花来

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

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

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

打赏作者

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

抵扣说明:

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

余额充值