浅谈网络爬虫技术
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">摘 要</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">日前</span>网络上存在着海量的数据资料,将这些数据爬取<span style="color: black;">保留</span>下来,并进行进一步操作,<span style="color: black;">就可</span>挖掘出数据的潜在价值。如今的互联网存在的缺陷是用户很难<span style="color: black;">得到</span>有用的数据资料,虽然传统的搜索引擎<span style="color: black;">能够</span>为用户返回<span style="color: black;">海量</span>信息,<span style="color: black;">然则</span>用户需要在庞杂的数据中寻找对自己有用的信息。<span style="color: black;">因此呢</span>现如今越来越多的平台<span style="color: black;">起始</span>搭建属于自己的数据爬取系统,并在爬取的数据<span style="color: black;">基本</span>上展开服务。本文将会对网络爬虫技术进行概述,并阐述其基本原理。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">一</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">网络爬虫技术概述</strong></p>网络爬虫又叫网络蜘蛛、网络<span style="color: black;">设备</span>人等,<span style="color: black;">能够</span>将其理解为一个在互联网上自动提取网页信息并进行解析抓取的程序。网络爬虫不仅能够复制网页信息和下载音视频,还<span style="color: black;">能够</span>做到<span style="color: black;">行径</span>链执行与网站的模拟登录。身处大数据时代,不论是人工智能还是数据分析,都需要有海量的数据在<span style="color: black;">背面</span>做支撑,<span style="color: black;">倘若</span>单单是依靠人力去手工采集,不仅成本<span style="color: black;">昂贵</span><span style="color: black;">况且</span>效率低下,在这一<span style="color: black;">需要</span>下,自动化且<span style="color: black;">有效</span>可并发执行的网络爬虫便担起了获取数据的重任。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">二</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">网络爬虫基本原理</strong></p>理论上<span style="color: black;">来讲</span>,任何编程语言都<span style="color: black;">能够</span>用来编写网络爬虫,<span style="color: black;">仅有</span>难易之分。<span style="color: black;">由于</span>网络爬虫本质上只是对<span style="color: black;">目的</span>服务器发起HTTP请求,并对HTTP响应做出处理,提取关键信息进行清洗入库。<span style="color: black;">这儿</span>的服务器<span style="color: black;">能够</span>理解为要爬取的网站站点,爬虫程序发起一次HTTP请求,网站服务器对请求做出一次响应,就构<span style="color: black;">成为了</span>一次网络爬虫<span style="color: black;">行径</span>,<span style="color: black;">然则</span>仅仅发起请求是不完整的,还需要将网站返回回来的信息进行数据解析和数据清洗,将<span style="color: black;">最后</span>需要的数据存储到数据库或是本地文件里才算是完<span style="color: black;">成为了</span>一整套的爬虫流程。如图1所示,完整的爬虫流程应当是编写的网络爬虫在发起请求之后,<span style="color: black;">目的</span>服务器返回指定的请求响应,<span style="color: black;">经过</span>对请求响应返回的响应体进行解析,找到需要的信息进行数据存储。<span style="color: black;">倘若</span>需要翻页<span style="color: black;">或</span>进行<span style="color: black;">转</span>,则从当前页面<span style="color: black;">或</span>响应体中提取出链接再次发起请求。<img src="https://mmbiz.qpic.cn/mmbiz_png/EWgMcLZQ4bS59QM1VbUpys8sic6iaicxhZribreF1pWrwEU2tOsibL83SBwIcIZibw3GHeZBB2MFBm73hUWDA4Suyicibw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">图 1 网络爬虫流程</p><span style="color: black;">一般</span><span style="color: black;">来讲</span>,<span style="color: black;">研发</span>一个网络爬虫<span style="color: black;">重点</span>有两个途径,一个是<span style="color: black;">按照</span>请求包和解析包从头<span style="color: black;">起始</span>爬虫编写,另一个是基于现行的爬虫框架,进行框架化<span style="color: black;">研发</span>。1.脚本编写爬虫Python实现了许多第三方库来帮<span style="color: black;">研发</span>者完成这个操作,<span style="color: black;">例如</span>github上开源的requests库便是发起HTTP请求的利器,这就省去了实现请求程序的时间,bs4解析库<span style="color: black;">更加是</span>让<span style="color: black;">研发</span>者只需要专注于网页信息的定位,操作网站返回的主体信息就<span style="color: black;">能够</span>了。<span style="color: black;">研发</span>重心<span style="color: black;">亦</span>就从协议处理转化到了<span style="color: black;">详细</span>网页的数据提取。<span style="color: black;">不外</span><span style="color: black;">倘若</span>爬虫编写者是要对有着反爬虫<span style="color: black;">办法</span>的网站进行数据采集,则需要花费精力去应对反爬虫手段,诸如JavaScript逆向、代码混淆<span style="color: black;">或</span>指纹风控之类的手段。2.基于框架开发爬虫如今流行的网络爬虫框架Scrapy,其基于异步Twisted引擎,将爬虫请求的<span style="color: black;">每一个</span><span style="color: black;">周期</span>都进行了拆分,并<span style="color: black;">创立</span>了钩子能够让<span style="color: black;">研发</span>者在每一<span style="color: black;">周期</span>进行定制化<span style="color: black;">研发</span>,<span style="color: black;">能够</span>大大加快网络爬虫的<span style="color: black;">研发</span>速度,并且其异步特性<span style="color: black;">能够</span>很好地实现并发爬取。Scrapy框架模块化和程序化的编写方式,符合团队合作的风格,相较于脚本编写爬虫,更易于集体<span style="color: black;">研发</span>和<span style="color: black;">守护</span>。但缺点是需要进行第三方的拓展时不如直接进行脚本编写方便,如今的爬虫大多需要进行JS逆向、验证码识别之类的操作,外接其他编程语言进行<span style="color: black;">研发</span>,这需要对Scrapy有着深入<span style="color: black;">认识</span><span style="color: black;">才可</span>做到程序稳定运行。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">三</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">网络爬虫<span style="color: black;">归类</span></strong></p><span style="color: black;">实质</span><span style="color: black;">研发</span>中<span style="color: black;">按照</span><span style="color: black;">详细</span>的代码实现与爬虫架构,网络爬虫<span style="color: black;">能够</span>被分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫与深层网络爬虫。1.通用网络爬虫(General Purpose Web Crawler)通用网络爬虫又叫全网爬虫,顾名思义,它的<span style="color: black;">目的</span>数据是<span style="color: black;">全部</span>互联网,爬取的数据极为丰富,<span style="color: black;">因此呢</span>常用于搜索引擎<span style="color: black;">其中</span>。它们<span style="color: black;">常常</span>从<span style="color: black;">有些</span>种子URL出发,辗转爬取<span style="color: black;">最后</span>拓展到<span style="color: black;">全部</span>网络。在爬虫流程里讲过,一个爬虫程序的设计离不<span style="color: black;">研发</span>起请求,解析页面和内容存储三个方面。既然要存储海量的互联网数据,那这类爬虫<span style="color: black;">针对</span>爬虫的性能和数据的存储空间就会<span style="color: black;">拥有</span>高<span style="color: black;">需求</span>,<span style="color: black;">况且</span><span style="color: black;">由于</span>URL数量<span style="color: black;">太多</span>,通用网络爬虫常常会忽略爬行页面的<span style="color: black;">次序</span>,并且采取并发的模式来<span style="color: black;">加强</span>爬取速度。正是<span style="color: black;">由于</span>它要爬取海量的数据,<span style="color: black;">因此</span>此类爬虫的爬取策略常常需要进行严格的设计与实践。就<span style="color: black;">日前</span>而言,深度优先爬取策略和广度优先爬取策略是较为<span style="color: black;">平常</span>的。<span style="color: black;">不外</span>真正应用于实践<span style="color: black;">其中</span>的通用网络爬虫策略<span style="color: black;">常常</span>会非常<span style="color: black;">繁杂</span>,并且穿插各类算法在其中。(1) 深度优先:<span style="color: black;">根据</span>页面深度进行排序,一次<span style="color: black;">拜访</span>下一级URL,直到触底<span style="color: black;">没法</span>深入。(2) 广度优先:<span style="color: black;">根据</span>页面内容目录层次进行划分,爬取完同一层次的URL才会继续进<span style="color: black;">入下一层进行爬取。</span>2.聚焦网络爬虫(Focused Crawler)聚焦网络爬虫更加适用于<span style="color: black;">平常</span>的爬虫<span style="color: black;">需要</span>,并不需要爬虫程序去获取<span style="color: black;">全部</span>互联网的资源,那是搜索引擎该做的事。它专注于某一主题,<span style="color: black;">选取</span>性爬取网页上与<span style="color: black;">研发</span>者<span style="color: black;">已然</span>定义的规则相匹配的数据资源,能够满足<span style="color: black;">针对</span>特定网站<span style="color: black;">或</span><span style="color: black;">行业</span>的信息爬取工作。聚焦网络爬虫的爬取策略有4种:(1) 基于内容<span style="color: black;">评估</span>:将用户输入的信息<span style="color: black;">做为</span>主题进行爬取,页面<span style="color: black;">包括</span>用户输入信息则认为主题<span style="color: black;">关联</span>。(2) 基于链接<span style="color: black;">评估</span>:<span style="color: black;">按照</span>页面结构信息分析爬取的URL重要性,<span style="color: black;">按照</span>重要程度进行爬取优先级的排序。(3) 基于<span style="color: black;">加强</span>学习:利用概率统计中的贝叶斯<span style="color: black;">归类</span>器,<span style="color: black;">按照</span>网页内容和链接文本对URL进行<span style="color: black;">归类</span>,计算出URL的权重,以决定爬取<span style="color: black;">次序</span>。(4) 基于语境图:结合<span style="color: black;">设备</span>学习系统,计算当前页面到<span style="color: black;">关联</span>的网页的距离,距离越近的页面的URL<span style="color: black;">拜访</span>越优先。3.增量式网络爬虫(Incremental Web Crawler)增量式网络爬虫<span style="color: black;">重点</span>目的是<span style="color: black;">很久</span>地维持一个数据库,<span style="color: black;">针对</span>其中数据的稳健性和实时性<span style="color: black;">拥有</span>高<span style="color: black;">需求</span>。简单<span style="color: black;">来讲</span>,它对<span style="color: black;">已然</span>爬取过的网页页面采取增量式更新,再次爬取的时候就会仅仅爬取新<span style="color: black;">显现</span>的<span style="color: black;">或</span><span style="color: black;">出现</span>改变的数据,<span style="color: black;">针对</span><span style="color: black;">无</span><span style="color: black;">出现</span>变化的页面或数据则不会爬取。此类爬虫常用的策略有三:(1) 统一更新:每隔一段时间将所有的页面再次<span style="color: black;">拜访</span>一遍,以达到更新数据的目的。(2) 个体更新:<span style="color: black;">按照</span>个体网站的数据变化频率来指定重新<span style="color: black;">拜访</span>的时间。(3) <span style="color: black;">归类</span>更新:将网页区分为数据变化<span style="color: black;">快速</span>的和数据变化缓慢的,以<span style="color: black;">区别</span>频率<span style="color: black;">拜访</span>这两类网页。4.深层网络爬虫(Deep Web Crawler)深层网络<span style="color: black;">重点</span>指的是没办法直接<span style="color: black;">拜访</span>到的页面,这类网页信息<span style="color: black;">一般</span>需要满足<span style="color: black;">必定</span>的<span style="color: black;">需求</span>才<span style="color: black;">能够</span>浏览,<span style="color: black;">隐匿</span>在<span style="color: black;">有些</span>表单之后,<span style="color: black;">不可</span><span style="color: black;">经过</span>静态链接直接获取。例如<span style="color: black;">平常</span>生活中遇到的<span style="color: black;">有些</span>必须登录注册后才<span style="color: black;">能够</span><span style="color: black;">拜访</span>的网站便属于深层网络的范畴。这类爬虫的<span style="color: black;">需要</span><span style="color: black;">亦</span>极其旺盛,<span style="color: black;">不外</span>只需要搭配GET和POST请求便<span style="color: black;">能够</span><span style="color: black;">拜访</span>,<span style="color: black;">重点</span>难点在于破解POST提交信息时候的网页数据加密,即JavaScript加密参数。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">四</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">网络爬虫与搜索引擎</strong></p><span style="color: black;">首要</span>,搜索引擎的制作离不开网络爬虫,如百度搜索引擎又叫作百度爬虫(BaiduSpider),谷歌搜索引擎又被<span style="color: black;">叫作</span>为谷歌<span style="color: black;">设备</span>人(Googlebot),<span style="color: black;">况且</span>通用网络爬虫有时候<span style="color: black;">亦</span><span style="color: black;">能够</span>用来指代搜索引擎,<span style="color: black;">是不是</span>搜索引擎<span style="color: black;">便是</span>网络爬虫呢?答案<span style="color: black;">是不是</span>定的。搜索引擎是一项综合性的技术,网络爬虫是实现搜索引擎的比必不可少的一环,爬虫只为搜索引擎<span style="color: black;">供给</span>数据,除此之外还有建立全文索引,进行倒排文件以及<span style="color: black;">供给</span><span style="color: black;">查找</span>服务等技术糅合在里边。除此之外,搜索引擎更关注的是大而全,为大<span style="color: black;">都数</span>用户<span style="color: black;">供给</span>检索服务,<span style="color: black;">因此</span>有些冷门的<span style="color: black;">无</span>被<span style="color: black;">加入</span>索引的网站就没办法被实时获取到,而网络爬虫则<span style="color: black;">能够</span><span style="color: black;">经过</span>个人定制,爬取<span style="color: black;">有些</span>搜索引擎关照不到的<span style="color: black;">地区</span>,典型的案例便是深层网络爬虫以及在robots.txt中<span style="color: black;">知道</span>禁止搜索引擎爬取的网站,而理论上<span style="color: black;">研发</span>者编写的网络爬虫<span style="color: black;">能够</span>到达世界上的任何网站。虽然<span style="color: black;">研发</span>者<span style="color: black;">平常</span>编写的网络爬虫远不及搜索引擎那般<span style="color: black;">繁杂</span>与<span style="color: black;">精细</span>,<span style="color: black;">然则</span>却能够让人<span style="color: black;">认识</span>到搜索引擎内部的工作原理。<span style="color: black;">况且</span>搜索引擎<span style="color: black;">亦</span><span style="color: black;">能够</span>看作是<span style="color: black;">平常</span>编写的一个个定向聚焦的网络爬虫聚合而来的,当搜索引擎没办法完成定向的数据搜集工作的时候,编写一个自己的网络爬虫就<span style="color: black;">显出</span>极为重要了。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">五</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">网络爬虫技术的<span style="color: black;">害处</span></strong></p><span style="color: black;">因为</span>网络爬虫<span style="color: black;">能够</span>模拟正常用户的<span style="color: black;">拜访</span>,<span style="color: black;">因此</span><span style="color: black;">能够</span>完成下单购物、抢票秒杀等<span style="color: black;">行径</span>,<span style="color: black;">况且</span>其是从协议层面实现的,抛开了电脑端和移动端的一系列<span style="color: black;">繁杂</span><span style="color: black;">行径</span>,速度远快于正常用户,会挤占正常用户的<span style="color: black;">需要</span>。<span style="color: black;">另外</span>,网络爬虫常被用来爬取公开的数据,<span style="color: black;">然则</span>爬取<span style="color: black;">行径</span>依然会占用正常的服务器资源。<span style="color: black;">况且</span>许多爬虫是追求效率的,是不加节制地,多线程、分布式地去进行数据爬取,对网站<span style="color: black;">导致</span>类似DDOS的攻击,使得正常用户<span style="color: black;">亦</span><span style="color: black;">没法</span><span style="color: black;">拜访</span>到数据。要从互联网上根绝网络爬虫<span style="color: black;">亦</span>是不可能的,<span style="color: black;">由于</span>网络爬虫<span style="color: black;">已然</span><span style="color: black;">作为</span>了互联网生态的一部分,搜索引擎便是最大的网络爬虫。网站要防止的是来自个人或组织的不加节制的爬虫<span style="color: black;">行径</span>,<span style="color: black;">经过</span><span style="color: black;">持续</span><span style="color: black;">加强</span>爬虫门槛,<span style="color: black;">创立</span>反爬虫<span style="color: black;">办法</span>,<span style="color: black;">能够</span>很大程度<span style="color: black;">增多</span>网络爬虫的爬取成本,降低网络爬虫带来的<span style="color: black;">害处</span>。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">参考文献</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Tianyi Ma,Ziyang Zhang. Medical Consultation System based on Python Web crawler//.Proceedings of 2021 2nd International Conference on Electronics, Communications and Information Technology (CECIT 2021).,2021:772-776.DOI:10.26914/c.cnkihy.2021.065511.</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Addo Prince Clement,Dorgbefu Jnr. Maxwell,Kulbo Nora Bakabbey,Akpatsa Samuel Kofi,Ohemeng Asare Andy,Dagadu Joshua Caleb,Boansi Kufuor Oliver,Kofi Frimpong Adasa Nkrumah. Video Ads in Digital Marketing and Sales: A Big Data Analytics Using Scrapy Web Crawler Mining Technique. Asian Journal of Research in Computer Science,2021.</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Ma Xiaoju,Yan Min. Design and Implementation of Craweper Based on Scrapy. Journal of Physics: Conference Series,2021,2033(1).</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Deng Kaiying,Chen Senpeng,Deng Jingwei. On optimisation of web crawler system on Scrapy framework. International Journal of Wireless and Mobile Computing,2020,18(4).</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Wang Wei,Yu Lihua. UCrawler: A learning-based web crawler using a URL knowledge base. Journal of Computational Methods in Sciences and Engineering,2021,21(2).</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">中国保密协会</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">科学技术分会</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">长按扫码关注<span style="color: black;">咱们</span></p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/EWgMcLZQ4bS59QM1VbUpys8sic6iaicxhZrpWvhHibqwaia0tTgpGlHAJdUdcq3n9kqxLicKJ6ud6cSq7iasN84KclV9g/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;">
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">作者:李岳阳 <span style="color: black;">网络与空间安全学院</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">责编:夏天天</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">2022年精彩<span style="color: black;">文案</span>TOP5回顾</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">跨网攻击:突破<span style="color: black;">理学</span>隔离网络攻击技术简介</a></p><span style="color: black;"><a style="color: black;">智慧城市安全顶层设计的思考</a></span><span style="color: black;"><a style="color: black;">再谈数</a>字取证技术发展面临的<span style="color: black;">有些</span>新问题</span><span style="color: black;"><a style="color: black;">低轨卫星互联网络的发展与挑战</a></span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">LaserShark无接触式攻击<span style="color: black;">移植</span>技术简介</a></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;">近期精彩<span style="color: black;">文案</span>回顾</strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><a style="color: black;">拦截网络爬虫流量技术的应用<span style="color: black;">科研</span></a></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">语义Web信任综述</a></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><a style="color: black;">浅谈物联网设备安全</a></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><a style="color: black;">关于4G LTE的无线链路层的攻击<span style="color: black;">办法</span>与防御<span style="color: black;">办法</span></a></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">ChatGPT专题(三)大语言模型的能力和<span style="color: black;">将来</span></a></p>
感谢你的精彩评论,为我的思绪打开了新的窗口。 一看到楼主的气势,我就觉得楼主同在社区里灌水。 我完全赞同你的观点,思考很有深度。 期待更新、坐等、迫不及待等。 请问、你好、求解、谁知道等。 我深感你的理解与共鸣,愿对话长流。
页:
[1]