全网AI资源网站搭建

电脑端+手机端+微信端=数据同步管理

免费咨询热线:13114099110

为什么会有爬虫这个行业?是怎么做的?

发布时间:2023-11-03 11:03   浏览次数:次   作者:派坤优化

为什么会有爬虫行业?

首先问大家:据说现在是“大数据时代”、“人工智能时代”。 大数据的发展和人工智能都需要大量数据的支持。 那么数据从哪里来呢?

什么是爬虫? 网络爬虫(Web),也称为网络蜘蛛、网络机器人,是一种按照一定规则自动抓取万维网上信息的程序或脚本。

爬虫的分类

网络爬虫按照系统结构和实现技术大致可以分为以下几种集中类型:

但严格来说,根据使用场景只有通用爬虫和专注爬虫。

通用网络爬虫

通用网络爬虫是搜索引擎爬行系统(Baidu、Baidu、Yahoo等)的重要组成部分。 主要目的是将互联网上的网页下载到本地计算机,形成互联网内容的镜像备份。 通用爬虫抓取网站的整个页面数据。 如果网站有js渲染、ajax等技术,则无法捕获部分页面数据。 对于用户来说,万能爬虫抓取的数据有80%是不可用的。例如:百度快照

暗示:

搜索引擎并不包括世界上所有的网站。 只有 20% 被搜索引擎收录。 未包含在内的 80% 网站称为“深网”。 深网的底层有一些网站,称为暗网。 暗网上有许多非法网站。 交易(如著名的暗网丝绸之路)均使用比特币。 暗网是深网的子集,也是深网的一小部分。 大多数深网和暗网都是使用非标准的http和https协议,但是一般的爬虫也可以爬取它们搜索引擎网站排名,但搜索引擎不知道它们的服务器地址。

通用搜索引擎 ( ) 的工作原理

一般网络爬虫从互联网上收集网页和信息。 这些网页信息用于索引并为搜索引擎提供支持。 它决定了整个发动机系统的内容是否丰富,信息是否实时。 因此,它的性能直接影响搜索引擎的效果。

第一步:抓取网页

搜索引擎网络爬虫的基本工作流程如下:

首先,选择一部分种子URL,将这些URL放入待爬取的URL队列中;

取出待爬取的URL,解析DNS获取主机的IP,下载该URL对应的网页,存放到下载的网页库中,并将这些URL放入已抓取的URL队列中。

分析已抓取URL队列中的URL,分析其中的其他URL,将该URL放入待抓取URL队列中,从而进入下一个循环......

搜索引擎如何获取新网站的URL:

新网站主动向搜索引擎提交URL:(如百度)

在其他网站上设置新的网站外部链接(尽可能在搜索引擎爬虫的抓取范围内)

通过与搜索引擎、DNS解析服务商(如等)合作,快速抓取新网站域名。

然而,搜索引擎蜘蛛的爬行是输入一定的规则的。 它需要遵守一些命令或文件内容,例如标记为的链接或协议。

协议(也称爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(),网站通过协议告诉搜索引擎哪些页面可以爬行,哪些页面不能爬行,对于例子:

淘宝:

腾讯:

第2步:数据存储

搜索引擎通过爬虫对网页进行爬行,并将数据存储到原始页面数据库中。 页面数据与用户浏览器获取的HTML(网页源代码)完全相同。

搜索引擎蜘蛛在抓取页面时也会进行某些重复内容检测。 一旦他们在访问权重很低的网站上遇到大量抄袭、收集或复制的内容,他们很可能会停止爬行。

第三步:预处理

搜索引擎对爬虫爬回的页面进行各种预处理步骤。

除了HTML文件之外,搜索引擎通常可以抓取并索引多种基于文本的文件类型,例如PDF、Word、WPS、XLS、PPT、TXT文件等。我们经常在百度或搜索中看到这些文件类型结果。

然而,搜索引擎尚不能处理图像、视频、Flash等非文本内容,也不能执行脚本和程序。

第四步:提供搜索服务和网站排名

搜索引擎对信息进行整理、处理后,为用户提供关键词检索服务,并向用户展示相关信息。

同时,网站会根据页面的值(链接访问的排名)进行排名,这样Rank值高的网站在搜索结果中排名就会靠前。 当然,你也可以直接用Money购买搜索引擎网站排名,简单粗暴。

课外阅读:搜索引擎如何工作

通用搜索引擎也有一定的局限性。

一般搜索引擎返回的结果都是网页,而大多数情况下,网页上的内容90%对用户来说是无用的。

不同领域、不同背景的用户往往有不同的搜索目的和需求,搜索引擎无法为特定用户提供搜索结果。

随着万维网上数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现。 一般的搜索引擎是无力发现和获取这些文件的。

通用搜索引擎大多提供基于关键词的检索,难以支持基于语义信息的查询,无法准确理解用户的具体需求。

专注于爬虫

聚焦爬虫是“面向特定主题需求”的网络爬虫程序。 它与一般搜索引擎爬虫的区别在于:有针对性的爬虫在爬取网页时会对内容进行处理和过滤,并尽量保证只爬取与需求相关的内容。 网页信息。

例如:对于淘宝上的商品信息,我们只能根据业务需求捕获价格等对我们有用的信息,而不能捕获其他不相关的信息(即过滤)

专注型爬虫爬取目标数据,而通用爬虫则爬取所有内容。

爬虫如何工作

爬虫的工作原理非常简单,由四个步骤组成。 可能有一些网站(即爬虫项目要求)不需要四步或更多,但一般爬虫只需要四步!

第一步,抓取网页

根据您的需求找到您需要爬取的网站。

通过抓包或者其他方式找到需要抓取的数据的URL(链接请求)。

只需使用编程语言中的一些爬虫相关库向这个或这些URL链接发送请求即可。 但爬虫获取的结果一般是HTML网页源代码或者json数据。 对于图片、视频、音乐等多媒体文件,爬虫发送请求后就会获取请求。 是一个二进制数据流。

第二步,提取相关信息

抓取网页源码或者json数据,我们需要通过正则表达式、xpath、css选择器等数据提取库来提取我们需要的数据。对于请求的多媒体文件,我们不需要提取,因为返回的文件二进制流为 ,直接保存多媒体文件对应的文件格式即可获取对应的多媒体文件。

第三步预处理

我们提取的数据可能不干净或者不是我们想要的格式。 在这种情况下,我们就需要对数据进行预处理。 常用的预处理包括去空、换行等。

步骤4 数据存储

在对数据进行预处理并得到最终数据后,我们需要将数据保存到数据库中或者将其存储为txt、excel、csv、json等格式的文件数据。 我们可以针对不同的情况选择不同的存储方式,比如保存到数据库。 可以存储在MySQL等关系型数据库中,也可以存储在Redis等非关系型数据库中。

爬虫和黑客的区别

其实爬虫和黑客是有本质区别的。 爬虫的本质和普通用户通过浏览器访问网站没有太大区别。 它只是通过程序访问特定的链接目标(不需要发出与目标数据无关的请求)。 因此速度比普通浏览器访问要快很多,而且爬虫可以批量访问特定数据而浏览器却不能。 对于一些需要登录或者一定权限才能访问的网站,爬虫还需要账号或者一定权限的支持才能进行爬行。 可以获取相关数据,但利用黑客技术就不行了。 黑客可以利用黑客技术,无需登录或获得一定权限,直接获取网站数据,也可以获取网站上看不到的数据。

爬虫类似于黑客。 例如,爬虫也可以作为攻击手段。 高频的爬虫请求会对服务器造成攻击,给服务器带来压力。 如果服务器无法响应,就会宕机(DDOS 攻击)。

网站爬虫的优点和缺点

也许你会认为爬虫只会对网站造成伤害,但事实并非如此。 虽然爬虫收集了大量的网站信息,但会导致其他网站最终创建的信息和数据被窃取,而爬虫的高频访问会对网站服务器造成严重损害。 如果进行攻击,服务器无法响应就会瘫痪,但爬虫也不全是坏事。 对于小型网站来说,爬虫可以增加其网站的访问量(12306网站每天有数亿的访问量,80%的流量实际上是爬虫提供的),网站的搜索排名实际上是为了让一般的爬虫(搜索引擎爬虫)都会尽可能多的爬行,以提高排名( SEO方法的一种),所以很多网站都会权衡利弊,采取相应的反爬虫措施。

应用场景

爬虫最直观的应用肯定是爬取数据,但是爬虫不仅可以爬取数据,还可以完成我们在浏览器上的一些操作,比如:抢票、短信轰炸、在线投票、抢购等。操作类型 所有操作都可以在浏览器上完成,但爬虫可以更直接、更快,可以批量执行相关操作。 从理论上来说,网站上可见的数据或者可以进行的操作都可以被爬虫抓取并进行操作。 为什么理论上这么说呢? 说什么? 因为有些网站会设置各种反爬虫机制,能不能抓取到数据就看你能不能破解它的反爬虫机制。

爬虫不仅可以爬取网站,还可以爬取应用程序数据或计算机软件数据。 这是因为网站、应用程序、计算机软件等的后台数据更新都需要发送请求。 只要找到相关的请求,爬虫就可以爬取。

爬虫技术爬虫技术太多就不一一写了。 放个爬虫技术知识点思维导图看起来更简单明了!

履带困难

爬虫的难点主要在于网站的反爬机制。 其次,高并发、海量爬虫也是爬虫开发的难点之一。

反爬虫机制 如果所有网站都没有反爬虫机制,那么爬虫工程师这个岗位的价值就会大打折扣。 爬虫上手基本上不难。 只需要学习一些请求库、提取库、数据存储就可以开发爬虫了。 高级爬虫开发是爬虫与反爬虫之间的斗争,这也是爬虫开发的乐趣所在。 常用的反爬虫机制有请求头检测、异常访问频率(ip反爬)、js加密、字体反爬、css反爬等。 爬虫、ajax异步加载、验证码等。在反爬虫与反反爬虫的较量中,反反爬虫最终会获胜,因为网站无法因为反爬虫而限制正常用户的访问。爬行机制,这会损失很多钱。 普通用户得不偿失,所以网站一般只会设置相对的反爬虫机制来抵制一些初级爬虫。 当然,对于反反爬虫来说,不仅仅是破解一个反爬虫机制。 首先需要考虑破解的成本。

向后爬

反爬就是对请求头进行反爬。 这也是最简单、最常用的反爬虫之一。 当我们用浏览器访问一个网站时,浏览器就会向服务器发送请求。 这些请求包括请求标头和请求正文。 数据,服务器经常会检查你是否正在发出正常的浏览器请求。 如果没有,它不会给您正确的响应。 我们得到的往往是403,爬虫并没有自带,但是我们可以在爬虫程序中伪装请求头。 ,这样服务器就不会检测到异常请求,这样我们就能得到正确的响应体。

IP反爬虫

IP反爬的主要原因是服务器检测到您的IP访问过于频繁,不像普通用户在浏览器中访问,所以会禁止您的IP(阻止),使您无法访问该网站甚至本网站附带的内容。 子网站无法访问,他们可能会禁止您的IP一天、一个月或永久。 有些网站发现IP请求过于频繁时,不会立即封禁你的IP。 为了避免误伤正常用户,他们会设置一个验证码,让他们来验证并确定你是否是机器爬虫。 那么IP地址反爬取的策略有哪些呢? 最简单的办法就是向网站妥协,约束自己,通过限制自己爬虫的速度,让爬虫的访问速度比正常人稍快一些。 最有效的办法就是设置一个IP代理池,然后随机选择IP地址搜索引擎网站排名,这样IP就不会被封禁。 即使IP被封禁,真实IP仍然可以访问网站。 互联网上有许多免费的 IP 代理。 但可用率不高,用户量大时容易失败,所以可以购买稳定的代理IP。 代理IP也有不同程度的匿名性。 最好使用高匿名代理,也可以使用洋葱代理或ADSL拨号代理,通过程序控制拨号过程。 下次您拨打时,将会更换不同的客服人员。

js加密

js加密等反爬方式有很多种。 有的通过js技术生成加密参数。 每次请求时都需要带上这个加密参数,并且不同的请求加密参数不同。 您必须携带它,否则您将无法获取数据。 有些静态页面提供了虚假数据(与页面不同),然后需要通过js传递真实数据,从而替换虚假数据。 有些静态页面没有数据,数据完全依赖js来进行渲染、填充等,最可怕的是有些网站对js加密的js文件进行混淆压缩。 如果你不熟悉js或者js混淆压缩,那么你就不知道如何破解js加密。 破解js加密最有效的方法就是找到加密函数,分析加密算法,然后逆向解密。 关键是找到js文件并解密js。 爬虫不能直接执行js,但是有很多库可以用来执行js。 当然,你也可以阅读理解js加解密逻辑,然后用你所了解的编程语言来实现。 JS加密也可以使用自动化测试()来完成,这是一个测试库。 它可以驱动浏览器来模拟人类对浏览器的操作。 不需要破解JS。 它允许浏览器执行JS,但是这种方法非常慢。 这需要时间和资源,而且并不是所有的反爬虫都能解决。

最常见的js加密方式有AES、DES、RSA、MD5、Hash加密等方法。 我们需要更多地了解这些。

验证码

网站验证码出现的一个很重要的原因就是为了限制爬虫的爬行。 验证码增加了爬取难度。 现在市面上有各种各样的验证码,比如极验证码(滑动验证码)、图片验证码、文字验证码、九宫格验证码等等,验证并不是不可能破解的。 可以使用OCR光学识别库(一种独特的文字识别库),但其识别效率不高。 如果验证码有噪声或者干扰线,那么很有可能无法识别,但是我们可以对其进行训练。 对于一些较难的验证码,我们可以利用机器学习和深度学习(卷积神经网络)对多个验证码进行标注和训练,识别效率可以达到90%以上。 另一种方式是自己手动编码或者花钱调用在线编码或手动编码平台接口。

时间有限。 其他反爬虫机制我就不详细说了。 如果您有兴趣,可以直接上网了解更多。

高并发

高级爬虫工程师和低级爬虫工程师的主要区别在于并发、量级、反爬。 有时候当一个项目需要的爬虫量达到上亿的时候,就需要考虑搭建高并发的爬虫集群了,因为简单的单线程爬虫根本就做不到。 爬取如此大量的数据是不可能的。 或许百万级数据的单线程爬虫已经达到了极限。 因此,需要考虑爬虫的爬取算法是深度优先还是广度优先(也称广度优先)来爬取数据。 您还需要考虑增量。 爬虫是指停止运行后,下次运行可以按照之前的进度继续爬行,而不是重新爬行。 还需要多台主机同时运行,实现重复数据删除。 这就是爬虫分布。 如何部署爬虫,如何对请求和数据进行去重,如何在固定的时间和一定的频率进行调度,都是大型项目中需要考虑的问题。

法律问题

网络爬虫带来的主要问题和担忧如下:

从技术上来说,过于野蛮的爬虫可能会导致网站过载(尤其是多线程爬虫),导致网站瘫痪、无法访问。

在内容方面,网络爬虫可能会导致网站所有者失去对其网站数据的控制。 例如,网站所有者不希望其他人获得的一些数据; 或者如果网站数据源付出了很大的代价,可能是因为网络爬虫。 很容易被别人大量收购。

从后果来看,网络爬虫还可能导致他人的数据被复制并被不当使用。 如果网站数据涉及他人个人信息,网络爬虫还可能导致大量数据在未经数据主体同意的情况下被他人获取,从而损害其利益。

因此,爬虫可能会涉及一定的法律风险。 俗话说:爬虫做得好,早进监狱。 所以我们爬虫工程师一定要规范自己。 我们的爬虫应该执行以下操作:

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。