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

news2024/9/30 21:31:27

目录索引

  • ==scrapy框架的介绍:==
  • ==scrapy第三方包的下载:==
    • 常见的换源网址:
  • ==scrapy的图示原理:==
    • 或者:
    • 或者:
  • ==scrapy原理流程:==
    • 详细介绍:
    • 流程描述:
    • scrapy中的三个内置对象:
    • scrapy中每个模块的作用:
  • ==Scrapy项目搭建:==
    • 详情:
  • ==scrapy的爬虫文件说明 :==
    • 给headers增加对应值:
  • ==运行框架的两种方式:==
    • <code>第一种命令启动:
      • *忽略日志文件:*
    • <code>第二种命令启动(推荐):

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文件下运行就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

open cv 4.6.0 导入maven库以及依赖包 安装教程

windows&#xff1a; 1.官网下载windows安装包 2.安装完成后&#xff0c;复制opencv\build\java\x64\opencv_java451.dll 到 C:\Windows 下 centos&#xff1a; 参考https://www.cnblogs.com/huizhipeng/p/12732019.html 1.先安装cmake3 参考https://www.jianshu.com/p/20…

详谈大模型训练和推理优化技术

详谈大模型训练和推理优化技术 作者&#xff1a;王嘉宁&#xff0c;转载请注明出处&#xff1a;https://wjn1996.blog.csdn.net/article/details/130764843 ChatGPT于2022年12月初发布&#xff0c;震惊轰动了全世界&#xff0c;发布后的这段时间里&#xff0c;一系列国内外的…

莫言用 GPT 写颁奖辞,那如果他自己写会是什么效果呢?

在《收获》杂志 65 周年庆典上&#xff0c;莫言在为余华颁奖时表示&#xff0c;余华是自己的好朋友&#xff0c;但给他的颁奖词写了好几天也想不出来&#xff0c;后来找了 ChatGPT 帮忙写。最后&#xff0c;莫言让 ChatGPT 写了一篇莎士比亚风格 1000 多字的颁奖词&#xff0c;…

「硬核分享」Docker+jenkinsPipeline 运行实现 python 自动化

一、实现思路 在 Linux 服务器安装 docker 创建 jenkins 容器 jenkins 中创建 pipeline 项目 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 运行新的 python 容器&#xff0c;执行 jenkins 从仓库中拉下来的自动化项目 执行完成之后删除容器 二、环境准…

Defining Timing Constraints and Exceptions(UG945)

在本实验中&#xff0c;将学习为设计创建约束的两种方法。将使用Vivado2019.2 IDE中包含的Kintex-7 CPU网表示例设计。 步骤1&#xff1a;打开示例项目 1.打开Vivado IDE。 Vivado IDE的“Getting Started page”包含打开或创建项目以及查看文档的链接。 2.在“Getting Started…

泛型编程与模板简单介绍,函数模板及其原理与template,typename,模板参数T,函数模板隐式实例化等

泛型编程 比方说现在要去实现一个通用的交换函数&#xff0c;以我们现在的思路&#xff0c;肯定是通过函数重载去解决。但是这样子的话有几个缺点&#xff1a;重载的函数仅仅是类型不同&#xff0c;代码复用率比较低&#xff0c;只要有新类型出现时&#xff0c;就需要用户自己…

水溶性花菁染料Sulfo-CY7 NHS este标记活性脂Cyanine7-NHS

Sulfo-CY7 NHS ester是一种荧光标记试剂&#xff0c;化学结构为C38H42KN3O10S2&#xff0c;分子量约为803.98 。此外&#xff0c;它的分子中还含有一个N-羟基琥珀酰亚胺酯基团&#xff0c;这个基团可以与生物分子中的氨基结合&#xff0c;从而实现荧光标记。Sulfo-CY7 NHS este…

Moonbeam联合Multichain和AWS Startups正式推出Bear Necessities Hackathon黑客松

我们很高兴宣布Bear Necessities Hackathon正式启动。本次黑客松包含7个挑战&#xff0c;超过7万美金的奖池等你来领&#xff01;我们欢迎所有的BUILDers参加&#xff0c;这是开发者们探索Moonbeam并构建跨链用例的机会&#xff01; 本次黑客松由Moonbeam、Multichain和AWS St…

js原生实现pc端日历组件

业务场景 客户要求日期选择使用pc端的样式&#xff0c;前端在x5平台上&#xff0c;也就是需要用原始html、js、css等实现&#xff0c;笔者使用于 原生javascript封装的PC端日历插件&#xff0c;不依赖任何第三方插件&#xff0c;复制的代码文件较长&#xff0c;可跳到 总结 处…

使用whistle对安卓手机进行调试

注意&#xff1a;手机调试的时候需要与电脑连同一个wifi。 1、安装whistle npm install -g whistle2、运行 whistle w2 start3、打开电脑浏览器 输入 http://10.53.40.72:8899/ &#xff0c;点击二维码&#xff0c;可以生成 rootCA.crt 证书&#xff0c;把它发到手机上&…

mysql8查看锁

一。准备环境 1.登录mysql&#xff0c;设置锁等待时间&#xff0c;然后退出。 mysql> set global innodb_lock_wait_timeout1200; Query OK, 0 rows affected (0.00 sec) 2.再次登录MySQL。打开第一个session 3.登录msyql&#xff0c;打开第二个session a&#xff1a;…

Rasa 3.x 学习系列-Rasa [3.5.8] -2023-05-12新版本发布

Rasa 3.x 学习系列-Rasa [3.5.8] -2023-05-12新版本发布 当自定义动作设置的值与槽的现有值相同时&#xff0c;将触发SlotSet事件。修复了这个问题&#xff0c;使AugmentedMemoizationPolicy能够正确地处理截断的跟踪器。 为了恢复以前的行为&#xff0c;自定义操作只有在槽值…

使用VSCode创建第一个ESP-IDF项目

1.在VSCode中安装ESP-IDF: 在 VS Code 中安装 ESP-IDF&#xff1a; 在-VS-Code-中安装-ESP-IDF、新建项目 安装过程中可能会遇到的问题&#xff1a; 解决-pip-安装第三方包时因-SSL-报错_pip-ssl error 在完全使用VSCode安装ESP-IDF环境后&#xff0c;不会存在ESP-IDF Termin…

【利用AI刷面试题】AI:十道Vue面试题巩固一下知识

文章目录 1. 你在Vue中遇到过哪些性能问题&#xff1f;如何优化这些性能问题&#xff1f;2. Vue生命周期钩子函数有哪些&#xff1f;在什么情况下使用它们&#xff1f;3. Vue组件通信方式有哪些&#xff1f;它们各自适用于哪些场景&#xff1f;4. 你了解diff算法吗&#xff1f;…

Hadoop(Yarn)

文章目录 1、Yarn 资源调度器1.1 Yarn 基础架构1.2 Yarn 工作机制1.3 作业提交全过程1.4 Yarn 调度器和调度算法1.4.1 先进先出调度器&#xff08;FIFO&#xff09;1.4.2 容量调度器&#xff08;Capacity Scheduler&#xff09;1.4.3 公平调度器&#xff08;Fair Scheduler&…

万物可卷!低代码充满想象,能打敢战

数字中国建设如火如荼&#xff0c;我们也在积极拥抱这些机会。一火再火&#xff0c;疯狂和理性并存&#xff0c;高潮迭起的低代码赛道常兴常青&#xff0c;无论如何&#xff0c;不管是否承认&#xff0c;中国低代码市场已然觉醒&#xff0c;能打敢战&#xff01; 低代码开发是…

【AI实战】给类ChatGPT的大语言模型外挂私有知识库

【AI实战】给类ChatGPT的大语言模型外挂私有知识库 原理准备环境代码下载 chatglm-6b 模型权重文件下载 Embedding 模型 GanymedeNil/text2vec-large-chinese安装依赖库我的计算资源 外挂知识库开启服务外挂知识库 测试参考 本文使用 langChain 来给大语言模型 ChatGLM-6B 外挂…

【数据结构】——排序

排序的概念及其运用 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&am…

计算机图形学 | 实验八:Phong模型

计算机图形学 | 实验八&#xff1a;Phong模型 计算机图形学 | 实验八&#xff1a;Phong模型Phong模型光源设置 光照计算定向光点光源聚光 华中科技大学《计算机图形学》课程 MOOC地址&#xff1a;计算机图形学&#xff08;HUST&#xff09; 计算机图形学 | 实验八&#xff1a…

挖掘有价值的用户需求 需警惕5大误区

1、听取用户等于听从用户 在挖掘有价值的用户需求时&#xff0c;往往需要认真倾听用户的想法和需求&#xff0c;这样我们非常容易陷入到用户的思维中去。用户提到的需求&#xff0c;是他们真实想要的需求&#xff0c;但并不一定是客观需求&#xff0c;因为用户往往并不清楚他们…