scrapy简单教程以及实战小家电维修

Scrapy是用python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架。使用Twisted高效异步网络框架来处理网络通信。Scrapy架构:

关于Scrapy架构各项说明,如下所示:

Scrapy数据流:

环境windows7+python3.6+scrapy1.40

scarpy在windows7环境下安装需要安装以下组件,否则报错。

以下有两种处理方式,这里选择第一种。

第一种:通过wheel来安装lxml.whl、twisted.whl

第二种:安装vs2015,并勾选各种支持python的选项

这里windows764位系统不知道为什么要下载win32的版本

2)安装wheel模块:python3–mpipinstallwheel

3)安装lxml,twisted.

把下载的包放置在python3.6的download(没有自己创建)下,然后进入该目录。

4)安装Scrapy即可:python3–minstallScrapy

至于windows10+python3.10+scrapy2.9.0可能出现以上报错,按照w7方式修复即可,但是我这边目前直接使用pipinstallscrapy安装即可,没有报错。

本章目的:

1)创建一个spider

代码:

现在使用cmd来执行scrapy

4)start_urls和start_request并存的优先级。

通过实验可以看出结果,如果两者并存,start_urls就不生效了

本章总结:

Spider作用

Resuest(发起请求)

Spider:

Response(信息的请求)→信息的提取

再次发起请求

在一些网站中使用scrapy爬取数据的时候会出现403错误,这里可以使用禁用robots协议和伪造浏览器User-Agent来实现。

现在首先测试爬取豆瓣网的T250的电影,然后查看请求头部。

1)首先创建一个豆瓣的spider.

然后去爬取豆瓣,发现403错误。

2)现在查看访问example的请求头部

Httpbin是一个测试网站,这里spider需要小做更改。打印出回应的body信息,这个body里面包含了很多我们想要的信息,比如请求头等等。

可以看到,我们的User-agent是scrapy的,所以被阻止掉了。

3)接下来,更改配置文件,使用火狐浏览器的User-Agent.

更改配置文件,模拟成为火狐浏览器访问。

再次爬取example,查看User-Agent.

4)现在爬取豆瓣

返回值为200了,代表正常访问

总结和技巧

我们访问网址的时候,一共有三种方式。

1.直接请求URL,在seeting配置文件里面直接设置User-Agent即可。设置之后,不管是shell还是用户终端,都可以直接进行访问,上面已经演示过了。

2.shell访问,在shell访问的时候直接指定用户user-agent,如:

先进入shell,以上是加了网址的,可以直接进行对这个网址的访问

3.不指定网址,直接进入shell,然后自己自定义网址操作。

这个和第二种方式区别不大,只是一个在进入shell之前的时候指定网址,一个在进入shell之后指定网址。

然后可以通response来获取网页的信息,有了这些信息,我们就可以根据标签去爬数据了。

上面章节中已经可以通过response来获取整个网页想要的信息,接下来,我们就要提取这些我们需要的信息。

根据html的区块来找到对应的标签,关系为层级父子关系

比如/html里面又包含head和body,head里面还包含title

匹配根下面的所有元素

跟下面就一个html的最大元素

然后匹配html下的所有元素,html下有head和body2大元素

如果直接匹配*,那么也是有head和body2大元素

匹配body下的所有元素

如选择这个网页所有标签为title的元素

匹配head下的meta元素

例如,选取class属性为info的div节点

或者选取class属性为hd的div节点下所有a标签下的span

如,直接定位到一个电影的名称,使用浏览器的xpath功能

更高级的用法,使用函数

由于有时候不知道该节点有多长,所以可以直接使用last选择最后一个节点

如匹配所有div下a标签下的span,class属性为title开头的节点,并且取出最后一个节点的值,注意,这里外层使用单引号

取出如果所有div或者li标签

把大于9.4评分的电影全部找出来,至于为什么要使用and,占时还不清楚

或者把找到的结果+0.1然后还大于9.4找出来。

选取类属性为title的元素

例如:选取前面有a元素的每个span元素

例如:找出a标签下所有span并且取出值

例如选取class为rating_num的元素

例如找到src属性结尾为jpg的速度,并且提取出来src的值

例如提取src属性包含doubanio的元素并提取值

例如找到class=hd下的为a的元素a为子节点,其实在前面章节>已经做到了

First-child第一个元素为xx的元素,因为要求hd下面第一个为span的,所以没有找到

查看获取下一页电影信息的结果

何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、解析、存储,scrapy框架都已经搭建好了。scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架,scrapy使用了一种非阻塞(又名异步)的代码实现并发的,Scrapy之所以能实现异步,得益于twisted框架。twisted有事件队列,哪一个事件有活动,就会执行!Scrapy它集成高性能异步下载,队列,分布式,解析,持久化等。

1.五大核心组件

引擎(Scrapy)框架核心,用来处理整个系统的数据流的流动,触发事务(判断是何种数据流,然后再调用相应的方法)。也就是负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等,所以被称为框架的核心。

调度器(Scheduler)用来接受引擎发过来的请求,并按照一定的方式进行整理排列,放到队列中,当引擎需要时,交还给引擎。可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址。

下载器(Downloader)负责下载引擎发送的所有Requests请求,并将其获取到的Responses交还给ScrapyEngine(引擎),由引擎交给Spider来处理。Scrapy下载器是建立在twisted这个高效的异步模型上的。

爬虫(Spiders)用户根据自己的需求,编写程序,用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。跟进的URL提交给引擎,再次进入Scheduler(调度器)。

项目管道(Pipeline)负责处理爬虫提取出来的item,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。

2.工作流程

Scrapy中的数据流由引擎控制,其过程如下:

(1)用户编写爬虫主程序将需要下载的页面请求requests递交给引擎,引擎将请求转发给调度器;

(2)调度实现了优先级、去重等策略,调度从队列中取出一个请求,交给引擎转发给下载器(引擎和下载器中间有中间件,作用是对请求加工如:对requests添加代理、ua、cookie,response进行过滤等);

(3)下载器下载页面,将生成的响应通过下载器中间件发送到引擎;

(4)爬虫主程序进行解析,这个时候解析函数将产生两类数据,一种是items、一种是链接(URL),其中requests按上面步骤交给调度器;items交给数据管道(数据管道实现数据的最终处理);

保存信息方式可以保存到文件中,也可以保存到数据库中

(上面的代码,文件处理是做做个简单的样子,逻辑并不严谨,比如只能保存一次循环的数据,由于是演示不合理的代码,这里就这么保持吧。)

查看结果

上面的方式采用了文件存储,那么spider模块也掺合了存储的事情,那么程序设计以及维护就不太合理和方便了,因为你spider专心做好你爬数据的事情,存储应该交给其他人做才好,不然,每次修改存储,可能会到到spider的代码,这样,代码的耦合性就太重了。

简单的使用item来定义提取的信息,这里简单演示仅使用一个name

接下来可以将值保存成不同的存储类型。

如:

csv

Json

在特殊场景下,json默认使用的是unicode编码,所以这里要指定格式

首先完成一个需求,如果想保存文件的时候想过滤,比如删除一些字段,那么怎么解决,这里有一个内置的方法。

首先启动ItemPipeline插件

保存为csv测试

查看执行过程,已经过滤掉了

文件里面肯定也是空的

现在使用Pipeline类的方式来保存信息,如保存成为txt的方式。

Open_spider:打开文件

Close_spider:关闭文件

Process_item:中间的逻辑处理

执行后查看item.txt

如果现在需要保存2个存储方式,一个csv,一个json,那么我们这里有一种办法,就是开启两个Item_pipelines项。

现在再将Item_pipelinse设置管道打开。

再次执行

本节课主要目的就是用类方法来获取settings里面的配置信息,比如,这里的json要存储,存储在那个路径,文件名是什么,我们想放入到settings里面,而不是写在代码里面。

配置文件信息

至于结果就不演示了

本章需求,把数据存储到mysql。当然需要两个前提条件。

1.会使用pymysql模块

2.数据库库以及表准备好

代码见以下:

pipelinese

最后别忘了pipe里面设置存储方式

查看mysql的结果

1.创建scrapy项目。

2.对setting进行设置,比如User-Agent

3.简单的编写,对详情页进行解析

创建项目

(这里有一步错误,这里就不更正了,执行第二条语句,一定要切换到项目里面)

设置Uset-Agent

简单编写,提取详细页信息

运行测试

本章目的。

提取详细页的导演名称,主演,电影别名,电影类型,国家等,由于有些标签没有固定属性,这里使用xpath+re来操作。

访问测试

本章主要使用代码优化,引入itemloader方法的使用,优化内容的提取。

编写items

现在执行爬虫,会发现每个item的值都是列表形式的

下节课就是将列表给取消。

上图中是两种对我们已经获取到的数据处理的方式。

第一种是通过xpath或者css得到的结果,我们进行自己的逻辑处理之后,在传给item,这种比较繁琐,等于自己写大量代码,不推荐。

第二种,如果直接使用itemloader,那么我们就没有办法对数据去进行处理,因为直接将值传给itemloader了,我们没有办法得到直接的数据,这个怎么办?这个当然有办法,就是item自己有的办法,本章就是讲解这个。

就是下图中的input_processor和output_processor,等于item早就准备好了方法,数据进来的时候有处理方式,数据出去的时候还可以再处理一遍。

数据进来的时候,使用mapCompose,这个函数,这个函数和python的map函数使用方式一样。假设map传入了三个函数f1,f2,f3,这三个函数分别作用是split,join,等,那么就会把使用了map后,f1处理完了之后,会把值传给f2,然后再传给f3.

下图就是MapCompose的具体使用方式

接下来在items中演示MapCompose的使用,使数据在pipeline的之前进行处理。

如果输入到items的数据是字符串类型,那么其实可以省略这些步骤

现在查看一下执行结果,都依照进出的规则去将字符串处理了

本章主要补全一些要获取的信息,如电影评分等信息,以及请求下一页的信息完善。

首先在items里面增加需要抓取的字段。

接下来抓取新增的信息

测试结果

本章结果已经完成了信息的补充,下一页的抓取,最后一节讲解怎么解决存储到数据库。

本章主要是实现痛过pipelines将数据存储到mongo中。

记得在settings里面开启

在mongo里面验证结果

总结

User-agent看看是不是浏览器

User-agent伪装以及请求延时设置

接下来的方式下一章讲解

User-Agent动态更新

在scrapy的流程中,给到download之前,我可以使用中间件对request做操作

本章重新创建一个项目来实现,主要使用DOWNLOADER插件的方法,然后查看User—Agent有没有更新。

安装fake_useragent模块

创建测试项目

老规矩还是把settings配置文件配置,只不过这里配置的是中间件。

现在编写middleware插件

现在访问查看UserAgent是否发生改变。

第一次访问

第二次访问

本节课简单讲了换ip代理,但是没有细讲,这里留一个记录吧,后面如果有机会再补充。

动态获取ip代理,老师源码里面也有,可以自己研究。

创建一个scrapy_post的post测试请求项目,由于浏览器默认只能发送get请求,现在来看看scrapy怎么发送post请求

主要注意,starturls是一个变量,不再是start_urls了,然后FormRequest来发送post表单的请求。

查看执行结果

以上是测试的form表单post的数据。

首先要解析login

所以我们需要分析页面,需要提交的时候我们需要哪些数据才能符合提交要求。

接下来,这里仅解释cookie的一些简单事例,暂无实战课程,老师直接讲源码。

登陆完成了,服务器怎么知道我一直是一个登陆的状态,现在就需要cookie

本章项目难点过高,如有需要,需要回来温习视频,现阶段不做记录

由于年代太久远,360升级了反爬方式,根据xpath定位根本就找不到标签,源码里面啥都没有,就比如视频开头的li标签。整个源代码里面哪里有?

整个网页都没有li标签。虽然这个实验坐不了,但是老师的源码思路还是保留一份。

这里也记录一下为什么xpath定位不到的原因。

原因通常是前端做的一些反爬措施,在编写网页的时候通常省略一层标签,但是被省略的标签浏览器会自动补充,修改成正确的结构。。

我们通过浏览器进行检查的时候,看到的代码结构是已经被浏览器修改后的,而爬虫获取到的是源代码

所以根据修改后的xpath解析源代码会找不到相应的元素,返回值自然为空

举例

浏览器修改后的代码

源码

缺少一个tbody标签,

总结当使用xpath获取不到向相应的元素的时候,观察一下源码结构,根据源码进行解析。

而我们的环境更苛刻,整个网页都是动态生成的,根本爬不了。

THE END
1.如何知道网站源码使用“view-source”这个IE命令即可查看到网页的源代码,具体语法为“view-source:网址”。如在IE地址栏中输入“view-source:http://www.sina.com.cn”,这时你就会发现,IE打开的并不是新浪的网页,而是新浪网首页的源代码!如果对HTML语言有一定的了解,那么当要进入某些http://m.15tql.com/zixun-107582/
2.基于springboot的宿舍报修系统源代码(完整前后端+mysql+说明文档系统涵盖了用户注册登录、报修申请提交、维修进度查询、 毕设项目-Java-SSM开发-vue的学生宿舍设备报修管理系统的设计与实现+vue+数据库+论文+源代码等.zip 浏览:33 系统基于MySQL数据库,稳定可靠,且易于扩展。开发环境包括JDK、IDEA和Tomcat,为开发者提供了便捷的开发工具。 项目源码包含完整的后端代码和前端Vuehttps://download.csdn.net/download/luoluoal/90122008
3.家电报修系统家电报修找易报修系统您身边的家电报修平台易报修家电报修系统系统支持家电报修,微信报修。易报修系统专业开发各类网上报修管理系统,适用于学校、公司、企业、政府部门机关单位等的设备故障报修管理与维修登记,大大提高信息化水平,方便管理。易报修家电报修系统,是一款专门针对家电维修行业而设计的管理软件,广泛适用于家电厂商,维修机构等企业的维修和售后服务管理中,http://www.lxuuu.com/news/content/2649.html
4.国外精产品W灬源码,加密安全稳定的网站源码在当今数字化时代,网站源码对于构建和管理网站至关重要。对于那些追求高品质、加密、安全和稳定的网站来说,国外精产品 W灬源码无疑是一个理想的选择。将深入探讨 W灬源码的特点、优势以及如何选择适合自己的源码。 W灬源码的特点 1. 加密技术:W灬源码采用先进的加密技术,确保网站数据的安全性。这对于涉及用户隐私http://m.mndjk.cc/mngl/17429.html
5.网页制作代码,家电维修网站源码参考这是一款网页制作代码,家电维修网站源码参考,专业干净的现代布局和流行元素,编码质量很高,超级容易定制,供大家参考。https://www.17sucai.com/pins/57510.html
6.PbootCMS家电维修/电脑手机维修公司自适应网站模板源码介绍 PbootCMS内核开发的网站模板,该模板适用于电脑维修网站、手机维修网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可。 模板特色 手工书写DIV+CSS、代码精简无冗余。 自适应结构,全球先进技术,高端视觉体验。 SEO框架布局,栏目及文章页均可独立设置标题/关键词/描述。 https://www.landafu.com/90588.html
7.网站被挂黑链,该怎么办?简介内蒙古乐在筝途教育咨询有限公司(www.lezaizhengtu.com)成立于2013年,专注于家电维修和保养,提供专业、快速、贴心的服务。家电维修电话:13678724537,欢迎咨询。 网站被挂黑链是网站什么意思 网站被挂黑链,通常就是被挂黑客利用网站程序或者是语言脚本解释的漏洞上传一些可以直接对站点文件进行修改的脚本木马,然后通过http://www.lezaizhengtu.com/jianzhan/13d609093896.html
8.家电小家电电暖器电风扇维修展示类织梦模板(带手机端) dedecms织梦模板下载 52DeDeCms居家/服饰/美容织梦模板 家用小家电电器类网站织梦模板(带手机移动端) dedecms织梦模板下载 AdminBabyCMS模板织梦模板 学生桌椅学习用品家具网站源码 课桌椅产品展示行业公司网站织梦模板 dede织梦模板下载AB模板 http://www.cnymc.com/tag/%E5%AE%B6%E7%94%B5
9.求一个家电维修售后的源码吾爱破解因为本人带了几个师傅在做维修售后,管理起来不太方便,从而想用系统来进行管理。基本功能要求:能够在线https://www.52pojie.cn/thread-1292867-1-1.html
10.网站模板大全企业网站模板网站源码分类入口(1) 通用网站(1) 维修服务(6) pbootcms模型(1) pbootcms模具(2) 注塑加工(1) 注塑(1) 模具制品(1) 注塑模具(1) 塑料模具(1) 3D(1) 3D模型(1) 楼盘模型(1) pbootcms驾校(2) 驾照培训(1) pbootcms农业(5) pbootcms.pb(1) 工业制造(2) 进出口(2) 相册图片(1) 壁纸(1) pbootcms相册(1) https://www.adminbuy.cn/tags.html
11.爱修客速回收移速快修客英文简称MSQR(全称Move speed quick repair),专注于生活服务的。经过多年的发展,已具备较大的维修团队,主要服务于社会成就于社会,为社会广大民众提供更加优质的服务体验!现致力于打造专业、便捷、优质的电脑手机家电数码网上维修平台。https://www.zlwlkj.com/
12.精修家电维修管理系统4.1(附注册机).rar精修家电维修管理系统4.1更新报告: 1、来电显示功能:当用户以前发生过维修业务并登记过电话,当再次打来电话时会显示该用户的信息 2、批量登记:可以一次登记多条记录,可以减少操作步骤,加快录入速度,在此登记时如机号为空时会提示. 3、添加客户联系卡:可以和用户联系的信息填写在此,以备日后查看.在此可以设置操作员https://www.iteye.com/resource/u013660400-6933591
13.家电售后服务管理系统论文毕业设计网写毕业设计程序定制我们的服务业也由于从业人员素质良莠不齐,整体服务水平不高,服务软硬件不配套而受到媒体和老百姓的批评。本系统的设计目的旨在满足各家电行业维修安装服务,它的应用改变了过去各行业陈旧的运作模式,将管理人员、工作人员从手工翻阅单据,信息统计等繁琐重复的劳动中解放出来,以更多的时间和精力投入到业务开展中去。http://www.taolw.com/a/Electron/11491.html
14.家政维修小程序家电维修上门维修预约上门公众号小程序开发家政维修小程序家电维修上门维修预约上门公众号小程序开发 近半年销量0 服务内容 版本及价格 基础版 ¥100.00 标准版 ¥3699.00 高级版 ¥7699.00 服务卖点 快速部署,保障售后,持续维护,持续更新 二开:模板,成品二开,支持源码,1对1服务 定制:私人定制 源码交付 保障售后 快速响应 一年维保,详情请点击咨询 https://shop.zbj.com/3141146/sid-1737959.html
15.免费成品网站源码1688「そして火事で死んでやろうと思うの」男子讲述:夫妇俩在空白合同上签字为亲戚担保多年,被法院强制执行43万元还款时才知道自己是主贷人李先生和妻子岳女士都是山东省聊城市莘县人,本来各有单位,但均在2000年前后下岗,之后两人先是打工,后开了一个家电修理门市,生活并不富裕,但也算平静幸福。“事情还得从2006年说起。”日前,李先生讲述了事情的发生http://m.cdkfq.gov.cn/edu/nNmeEYS9jwXdCT.phtml
16.品优源码免费网站源码免费商业源码免费网站模板品优源码是一个专业的网络资源分享平台,提供各种PHP源码、网站源码、游戏源码、模板插件、软件工具、网络教程、活动线报等,为中国站长提供一站式资源下载。http://www.pucms.com/
17.代码货栈代码货栈提供 计算机专业毕业设计项目源码,毕业设计开题报告,毕设答辩, Java毕业设计,Web毕业设计, 上千套毕业论文,论文任务书,开题报告,java,jsp,javaweb,php源码下载 源码分享,免费毕设指导代做https://cs-work.com/
18.家电维修管理系统专业版V4.0无限制破解版讯易软件资源简介 《家电维修管理系统专业版》是一款针对各家电售后维修站的管理所设计的一款软件,它可以记录客户的基本信息、要求服务信息、派工、维修工的返馈及用户回访等功能以及配件采购进货,配件出库、员工的手中还有多少配件等各种统计,是一款有效的管理软件。 http://www.nz998.com/other/311565.html
19.微擎小程序维修店V4.4.3公众号+小程序双端源码,解决单店模式维修店V4.4.3公众号+小程序双端源码,解决单店模式下单的订单提交bug! 维修店小程序,手机数码维修行业解决方案。客户下单后,1分钟之内通知店内全部技师,技师端抢单模式,后台可以派单模式。 公众号和小程序共享同一套配置参数,不需要重复设置参数,简单便捷。 https://www.wazyb.com/13072.html
20.便民信息网便民信息网是集合本地家政公司、本地家电维修、本地家电清洗、本地开锁换锁、本地搬家公司、本地管道疏通、家庭维修、等各类生活便民信息发布和查询,免费为老百姓提供本地生活信息资讯!https://www.916866.com/
21.热水器维修维修电话热水器维修上门维修快修店热水器维修专题集成了本地的热水器维修查询服务,提供专业的家电维修公司和优惠的价格,是您维修热水器的首选网站https://www.dmooy.com/
22.网站建设模板建站企业自助建站网站定制开发CMS建站(自适应)响应式数码产品销售出租电子产品租售电脑出租数码产品租售二手电脑二手手机类网站模板 价格:1680编号:P900 更新时间:2024-11-18 演示 (自适应)响应式简繁双语家政维修保洁家政服务公司上门维修类网站模板 空调维修家电维修类网站源码下载 价格:1680编号:P899 https://www.029mb.cn/
23.回收蛙旧衣回收H5APP网站源码定制开发交付实体门店引流拓客系统开发-源码定制交付2024-11-11 实体门店引流拓客APP系统平台开发运营2024-11-11 实体门店引流拓客平台定制开发(H5 APP)2024-11-11 家电维修同城预约维修管理系统平台开发2024-11-11 预约家电维修APP开发(按需定制 质量保证)2024-11-11 预约同城家电维修系统APP搭建开发规划2024-11-11 预https://m.trustexporter.com/m21-d1670046.htm
24.巅云分类信息系统v8门户版家电维修 电脑维修 家居维修 管道疏通 外卖/送水 开锁/修锁 租车服务 旅游度假 休闲娱乐 酒店/宾馆 其它生活服务 教 教育培训 +发布教育培训 职业培训 外语培训 学历教育 家教 IT培训 留学签证 高等教育 文体培训 婴幼儿教育 中小学教育 其他培训 同 http://templates.citclub.cn/
25.系统家居装修家装门户系统婚庆门户系统O2O源码家电维修 行业经典案例 轻松家电|家电管家|维修会 查看详情 上门家教 行业经典案例 跟谁学|好老师|疯狂老师 查看详情 外卖订餐 行业经典案例 饿了吗|淘点点|外卖超人 查看详情 上门家政 行业经典案例 阿姨帮|58到家|E家洁 查看详情 商超,便利店 行业经典案例 https://www.ijh.cc/index-old.html