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