首页 > 其他分享 >了解网络爬虫

了解网络爬虫

时间:2023-07-10 22:55:20浏览次数:27  
标签:URL 爬虫 网络 网站 了解 验证码 页面

理解网络爬虫

1.1网络爬虫的定义

当今最大的网络是互联网,最大的爬虫就是各类搜索引擎,包括谷歌丶百度等。网络爬虫就是按照一定规则去爬去人类所需要的信息的程序,主要通过对URL的请求来实现。一般来说,从搜索引擎这类爬虫搜索到的信息是非常宽泛的,而且夹杂着各种广告,信息是不纯粹的,也有可能不是我们需要的。这种时候,就需要一些聚焦于某一方面信息的爬虫来为我们服务,比方说,专门爬取某一类书的信息,在网站上浏览的时候,可能会有形形色色的图片和一些其他信息干扰我们,如果编写网络爬虫的话,就可以单单把自己想要的信息存储下来,以便数据分析,提取有用的信息。

1.2网络爬虫的类型

现在的网络爬虫大体可以分为四类:全网爬虫,主题爬虫,增量式爬虫和深层爬虫。

全网爬虫:也就是谷歌百度等搜索引擎,这类爬虫会从一些非常基础的URl出发,一直延伸到整个网站,这类爬虫庞大臃肿,需要很大的存储空间以及极高的爬行速度。

主题爬虫:满足特定人的特定需求,不同于全网爬虫,它是有选择地爬行与需求相关的信息。

增量式爬虫:对已经下载的页面采取增量式更新的爬虫,只爬取新产生的或者发生变化的网页,一定程度上可以保证爬取得页面是最新的,减少了空间的浪费,但是复杂度较高。

深层网络爬虫:不能通过静态URL访问,隐藏在表单后,只有用户提交一些关键词才能得到的页面。

1.3网络爬虫的原理

 

 

 

 

 

 

 

 

 

 

如果正确返回了网页response,就构成了了一次爬虫行为,接下来我们要做的就是解析页面,获取我们需要的信息了。

一般流程如图所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

1) 从基础URL开始爬行

2) 从初始页面抓取到我们需要的URL

3) 对新的URL继续解析,再次抓取新的URL

1.4网络爬虫的搜索策略

网络爬虫过的搜搜策略一般分为三种

1) 深度优先

深度优先指的是当某个页面的URL被选择后,对被选择的URL进行深度优先搜索,搜索后得到新的页面,再从新的页面继续选择URL,循环往复,直到新的请求页面没有URL为止。

2) 广度优先

广度优先指的是爬取完一个页面的全部URL之后,再选择一个URL进行深入,当把新的URL请求的页面的URL全部爬取完毕,再继续深入。

3) 聚焦爬虫

聚焦爬虫会通过给下载好的页面打分的形式,根据得分把页面插入队列中,这样就有可能优先追踪那些最有价值的页面。

1.5常见反爬虫技术与解决方案

1)用户请求headers

   从用户请求过来的request headers中查看是否存在User-Agent,如果不存在会在中间件中将请求过滤,不会返回正常response。还有一些网站会通过请求头里边的Referer进行检测,一些资源网站的防止盗链技术就是通过这个来实现。对于这种反爬虫机制,我们只需要在headers中添加user-agent与referer就可以解决。

2)用户访问频率

   有些网站通过用户请求网站的频率来判断请求者是用户还是爬虫,比如豆瓣会对访问频率过高的爬虫进行封禁,这就需要我们控制请求网站的速度,或者是建立IP代理池来解决。

4) 网站目录数据加载

上述反爬虫技术  是在静态网站,还有一些网站会通过Ajax交互,遇到这种情况,需要我们找到Ajax访问接口,分析具体的参数和结构,在爬虫中模拟Ajax,就可以获得所需数据。

5) 通过数据加密

有些网站会通过JavaScripts对一些参数加密,这些加密代码可以在js文件中找到,分析代码需要掌握前端技术,但是耗费时间较多,难度大。另一种解决方案是通过selenium,调用浏览器模拟人类行为,slelenium可以完美触发网页的js,基本上解决这类问题,不过爬取速度较慢。一般只有在迫不得已的时候才会使用。

6) 基于验证码识别

早期的验证码主要是数字验证码,可以调用第三方平台或者OCR识别技术解决。不过现在出现了图片验证码,目前仍然需要人类去操作;滑块验证码的破解已经有了成熟的技术,就是利用PIL模块与selenium来实现,比如B站登陆时候的滑块验证码。

标签:URL,爬虫,网络,网站,了解,验证码,页面
From: https://www.cnblogs.com/JWmorning/p/17542594.html

相关文章

  • 爬虫学习02 requests高级用法
    1requests高级用法1.0自动携带cookie的session对象#session对象----》已经模拟登录上了一些网站---》单独把cookie取出来-res.cookies是cookiejar对象,里面有get_dict()方法转换成字典-转成字典res.cookies.get_dict()#使用session发送请求,cookie自动携带sess......
  • 网络流学习笔记
    网络流基本概念(fromOIwiki)网络:有向图\(G=(V,E)\),其中每条边有一个流量\(c\),当\((u,v)\notinE\)时,\(c_{(u,v)}=0\)。其中有两个特殊的点:源点\(s\inV\),\(t\inV\)。流:定义函数\(f(u,v)\),满足下列条件:容量限制:\(f(u,v)\lec(u,v)\)。斜对称性:\(f(u,v)......
  • 5分钟了解质量管理发展史
    工业革命前产品质量由各个工匠或手艺人自己控制。1875年泰勒制诞生——科学管理的开端。最初的质量管理——检验活动与其他职能分离,出现了专职的检验员和独立的检验部门。1925年休哈特提出统计过程控制(SPC)理论——应用统计技术对生产过程进行监控,以减少对检验的依赖。1930年道......
  • 【热门技术】一文了解什么是云原生
    ......
  • 爬虫学习01
    1扫码登录功能#前端1前端进入扫码登录页面---》向后端发送请求----》后端生成二维码图片---》显示在前端,暂存key2掏出手机,打开对应的app-----》扫描二维码----》app端提示是否登录---》当你点登录---》app能解析出这个地址----》取出你当前app登录的token----》向这个......
  • aardio中获取网络图片经GDI处理后保存到本地
    下面的代码是将图片保存到/img目录下:代码如下:importprocess;importfsys.stream;importgdip.bitmap;importinet.http;//获取一个网络图片varpngData=inet.http().get("http://www.baidu.com/img/baidu_logo.gif");//转换为GDI对象处理varbitmap=gdip.bitm......
  • 三菱CNC数控数据采集网络配置
    菱数控系统在国内比较少见比不过国外的fanuc西门子等,和国内的一线数控品牌比起来性价比又很低。api接口如图  废话不多说,直接开撸一概述 Windows界面在三菱CNCM700/M800系列数控系统中的应用以及CNCC70系列。产品可以通过消除对内部处理的了解来加速开发计算机数......
  • 台湾新代数控系统数据采集CNC系列通讯网络配置
    新代数控为Wince系统,近几年的新代都焊接了网口以及集成了api接口 控制器版本   架构新代的Dipole功能将人机与核心分离,让使用者于前台的应用程序(例如标准人机),透过因特网,进行操控后台的控制器。使用者可以藉由这个架构进行远程监控、远程诊断。前台应用程序的开发环境......
  • Fanuc发那科法兰克数控系统采集系列教程完整版(数据采集、网络配置、教程)
    Fanuc数控系统初探 FANUC是日本一家专门研究数控系统的公司,成立于1956年。是世界上最大的专业数控系统生产厂家,占据了全球70%的市场份额。FANUC于1959年首先推出了电液步进电机,在后来的若干年中逐步发展并完善了以硬件为主的开环数控系统。进入70年代,微电子技术、功率电子技......
  • 注塑机数据采集(海天、住友、发那科、力劲、伊之密、恩格尔、泰瑞、佳明、双马、宁波通
    注塑机企业比较关注机实时状态、工艺参数(温度压力)、机器生产效率、设备能耗,运行时间、设备温度压力参数、以及各类工艺参数先上采集图,下面将技术拆解通讯模式(非应答模式)  文章以海天注塑机为列海天系列主要用弘讯控制器为主,弘讯TECH系列(如580、1s、2s、530)、弘讯AK系列......