百度爬虫爬到虚拟链接 网站被黑_什么是网络爬虫?原理是什么?种类有多少?...

news/2024/5/20 23:22:38/文章来源:https://blog.csdn.net/weixin_39542093/article/details/111131348
40326c206684858079ed907d4a236b86.png
ins @ngadc

前言

我相信很多人都听说过(网络)爬虫,但不清楚这到底是个什么概念。本文借助网上相关资料,进行简单地汇总整理。爬虫还是比较敏感,在简书发文章,竟然发不了。。。

目录

  • 什么是网络爬虫

  • 网络爬虫的基本原理

    • 1、获取网页

    • 2、提取信息

    • 3、保存数据

    • 4、自动化程序

  • 能抓怎样的数据

    • JavaScript 渲染页面

  • 网络爬虫种类

    • 1、通用网络爬虫

    • 2、聚焦网络爬虫

    • 3、增量式网络爬虫

    • 4、深层网络爬虫

  • 小结

什么是网络爬虫

网络爬虫也叫网络机器人,可以代替人们自动化浏览网络中的信息,进行数据的「采集」与「整理」。

它是一种程序,基本原理是向网站/网络发起请求,获取资源后分析并提取有用数据。

从技术层面来说,就是通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频)爬到本地,进而提取自己需要的数据,并存放起来使用。

我之前做的「极简新闻」就是用了网络爬虫,它每天定时帮我去各大新闻网站获取新闻标题。它很好地帮我省去了人为复制粘贴的流程。

网络爬虫离我们很近,比如说,你每天使用的百度,其实就是利用了这种爬虫技术:每天放出无数爬虫到各个网站,把他们的信息抓回来,然后化好淡妆排着小队等你来检索。简要流程如图1所示。

25d447a393d6afe8f09d7d155ae7facd.png
图1. 百度简要流程

网络爬虫的基本原理

下面介绍网络爬虫的基本原理,来自参考资料[2]。

我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了。

下面简要介绍一下网络爬虫的基本流程:

1、获取网页

爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码。源代码里包含了网页的部分有用信息,所以只要把源代码获取下来,就可以从中提取想要的信息了。

前面讲了请求和响应的概念,向网站的服务器发送一个请求,返回的响应体便是网页源代码。所以,最关键的部分就是构造一个请求并发送给服务器,然后接收到响应并将其解析出来,那么这个流程怎样实现呢?总不能手工去截取网页源码吧?

不用担心,Python提供了许多库来帮助我们实现这个操作,如urllibrequests等。我们可以用这些库来帮助我们实现 HTTP 请求操作,请求和响应都可以用类库提供的数据结构来表示,得到响应之后只需要解析数据结构中的Body部分即可,即得到网页的源代码,这样我们可以用程序来实现获取网页的过程了。

2、提取信息

获取网页源代码后,接下来就是分析网页源代码,从中提取我们想要的数据。首先,最通用的方法便是采用正则表达式提取,这是一个万能的方法,但是在构造正则表达式时比较复杂且容易出错。

另外,由于网页的结构有一定的规则,所以还有一些根据网页节点属性、CSS选择器或XPath来提取网页信息的库,如 Beautiful Souppyquerylxml 等。使用这些库,我们可以高效快速地从中提取网页信息,如节点的属性、文本值等。

提取信息是爬虫非常重要的部分,它可以使杂乱的数据变得条理清晰,以便我们后续处理和分析数据。

3、保存数据

提取信息后,我们一般会将提取到的数据保存到某处以便后续使用。这里保存形式有多种多样,如可以简单保存为 TXT 文本或 JSON 文本,也可以保存到数据库,如 MySQLMongoDB 等,也可保存至远程服务器,如借助 SFTP 进行操作等。

4、自动化程序

说到自动化程序,意思是说爬虫可以代替人来完成这些操作。首先,我们手工当然可以提取这些信息,但是当量特别大或者想快速获取大量数据的话,肯定还是要借助程序。爬虫就是代替我们来完成这份爬取工作的自动化程序,它可以在抓取过程中进行各种异常处理错误重试等操作,确保爬取持续高效地运行。

能抓怎样的数据

在网页中我们能看到各种各样的信息,最常见的便是常规网页,它们对应着 HTML 代码,而最常抓取的便是 HTML 源代码。

另外,可能有些网页返回的不是 HTML 代码,而是一个 JSON 字符串(其中 API 接口大多采用这样的形式),这种格式的数据方便传输和解析,它们同样可以抓取,而且数据提取更加方便。

此外,我们还可以看到各种二进制数据,如图片、视频和音频等。利用爬虫,我们可以将这些二进制数据抓取下来,然后保存成对应的文件名。

另外,还可以看到各种扩展名的文件,如 CSS、JavaScript 和配置文件等,这些其实也是最普通的文件,只要在浏览器里面可以访问到,就可以将其抓取下来。

上述内容其实都对应各自的 URL,是基于 HTTP 或 HTTPS 协议的,只要是这种数据,爬虫都可以抓取

JavaScript 渲染页面

有时候,我们在用 urllibrequests 抓取网页时,得到的源代码实际和浏览器中看到的不一样。

这是一个非常常见的问题。现在网页越来越多地采用 Ajax前端模块化工具来构建,整个网页可能都是由 JavaScript 渲染出来的,也就是说原始的 HTML 代码就是一个空壳,例如:

This is a Demo

body 节点里面只有一个 idcontainer 的节点,但是需要注意在 body 节点后引入了 app.js,它便负责整个网站的渲染。

在浏览器中打开这个页面时,首先会加载这个 HTML 内容,接着浏览器会发现其中引入了一个 app.js 文件,然后便会接着去请求这个文件,获取到该文件后,便会执行其中的 JavaScript 代码,而 JavaScript 则会改变 HTML 中的节点,向其添加内容,最后得到完整的页面。

但是在用 urllibrequests 等库请求当前页面时,我们得到的只是这个 HTML 代码,它不会帮助我们去继续加载这个 JavaScript 文件,这样也就看不到浏览器中的内容了。

这也解释了为什么有时我们得到的源代码和浏览器中看到的不一样。

因此,使用基本 HTTP 请求库得到的源代码可能跟浏览器中的页面源代码不太一样。对于这样的情况,我们可以分析其后台 Ajax 接口,也可使用 SeleniumSplash 这样的库来实现模拟 JavaScript 渲染。

网络爬虫种类

下面介绍网络爬虫的四大种类,来自参考资料[1]。

1、通用网络爬虫

通用网络爬虫又叫作全网爬虫,顾名思义,爬取的目标资源在全互联网中。这种爬虫所爬取的目标数据是巨大的,并且爬行的范围也是非常大的。

正是由于其爬取的数据是海量数据,所以对于这类爬虫来说,其爬取的性能要求是非常高的。这种网络爬虫主要应用于大型搜索引擎中,有非常高的应用价值。

通用网络爬虫的策略主要有深度优先爬行策略广度优先爬行策略

2、聚焦网络爬虫

聚焦网络爬虫也叫主题网络爬虫,是按照预先定义好的主题有选择地进行网页爬取的一种爬虫。聚焦网络爬虫主要应用在对特定信息的爬取中,主要为某一类特定的人群提供服务。

聚焦网络爬虫由于可以按对应的主题有目的地进行爬取,所以在实际的运用过程中可以节省大量的服务器资源和宽带资源,因而具有很强的实用性。这里我们以聚焦网络爬虫为例来了解爬虫运行的工作原理和流程。

42d021bdda542873a7b0ee4e245724b4.png
图2. 聚焦网络爬虫流程

3、增量式网络爬虫

这里的「增量式」对应着增量式更新,增量式更新指的是在更新的时候只更新改变的地方,而未改变的地方则不更新。

增量式网络爬虫,在爬取网页的时候,只爬取内容发生变化的网页或者新产生的网页,对于未发生内容变化的网页,则不会爬取。增量式网络爬虫在一定程度上能够保证所爬取的页面,尽可能是新页面

4、深层网络爬虫

在互联网中,网页按存在方式分类可分为「表层页面」和「深层页面」。

  • 表层页面指的是不需要提交表单,使用静态的链接就能够到达的静态页面;
  • 深层页面是需要提交一定的关键词之后才能够获取得到的页面。而在互联网中,深层页面的数量往往比表层页面的数量要多很多;

深层网络爬虫可以爬取互联网中的深层页面,爬取深层页面,需要想办法自动填写好对应表单。深层网络爬虫主要由URL列表、LVS列表(LVS指的是标签/数值集合,即填充表单的数据源)、爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器等部分构成。

小结

俗话说,爬虫玩得好,牢饭吃到饱。当你比较熟练掌握网络爬虫时,限制你的不再是反爬虫技术,而是商业法律。

参考资料

[1] 通俗的讲,网络爬虫到底是什么?DataHunter回答

[2] Python3网络爬虫开发实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_713237.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cms php vue 开源_企业网站制作常用CMS网站内容管理系统推荐

现在做网站90%的都是采用cms网站管理系统,内容管理系统(CMS)是一种当下非常主流的网站建设系统,能够快速地帮助我们建立一个属于自己的网站,相比定制后台系统,主流的cms都是经过很多年持续更新,经过了大量用户不断检验…

机器学习数据挖掘-软件、网站、课程资源知识点汇总

转载自:http://blog.csdn.net/godenlove007/article/details/8899186 在学习机器学习的有关知识时,搜索到JerryLead的cnblog中的Machine Learning专栏,里面对于机器学习的部分算法和知识点讲解地很经典和透彻。所以Mark在这,多多学…

html title 不显示_SEO入门教程二:学习最基础的html代码知识

其实,做SEO并不一定要很懂代码,只要基础能看懂就行。当然如果你很懂代码,那是加分项,下面这些基础能看就行。首先,我们需要了解网页的基本结构,分为head和body两部分,中文解释头部和内容部分&am…

idea怎么调试jsp页面_JSP+Servlet+C3P0+Mysql实现的YCU movies电影网站

项目简介项目来源于:https://gitee.com/zhp0514/java_web_movie_website_project这次分享一个电影网站,页面炫酷,需要有一定的前端功底。该网站存在一些bug,感兴趣的可以自行改改,也可以私信我。本系统基于JSPServletC…

内存模型 linux,内存模型 - STM32F4 编程手册学习_Linux编程_Linux公社-Linux系统门户网站...

STM32F4编程手册学习2_内存模型1. 内存映射MCU将资源映射到一段固定的4GB可寻址内存上,如下图所示。内存映射将内存分为几块区域,每一块区域都有一个定义的内存类型,一些区域还有一些附加的内存类型。内存类型有以下几种:Normal处…

网站点赞 评论 回复 数据库设计

本文主要分享了我在设计评论模块中的一些心得,希望对读者有些许帮助。 关于这种常用功能,查了许多资料 又基于公司的业务场景 1.由用户发表作品 其他已注册用户 在浏览个用户发表的作品时可以进行 点赞 评论 (同时可以撤销点赞&#xff09…

如何提高服务器响应的数据速度_提升网站服务器的响应速度的方法

很多朋友在使用服务器时都遇到过服务器响应缓慢的情况,那么我们该如何提升网站服务器的响应速度呢?接下来我们深圳葵芳的客服,就来为大家简单的介绍一下吧。尽可能的减少HTTP请求数从客户访问网站页面到整个页面内容完全展现出来,这其中要花…

vue seo关键词设置_网站文章中如何设置关键词才更有利于SEO优化?

文章内容在网站优化中占据重要的分量,文章内容的高质量会非常有助力网站排名提升,更能给网站带来更多的流量。那么在网站优化中,如何设置文章内容的关键词才能更利于网站SEO优化?一、文章的关键词要有合适的出现频率文章内容的关键…

怎么用百度搜索php网站,PHP简单获取网站百度搜索和搜狗搜索收录量的方法

本文实例讲述了PHP简单获取网站百度搜索和搜狗搜索收录量的方法。分享给大家供大家参考,具体如下:获取网站百度搜索和搜狗搜索的收录量代码,可以用于获取网站域名在搜索引擎的收录数量,一直想找这个API但没找到,就在网…

使用 MSDeploy 部署网站

在Visual Studio 2010中,有了一种新的方式来部署网站。使用MSDeploy,可以更方便得将网站部署到多台服务器上。它会先将项目进行打包,包中包含了配置信息和网站文件。配置Package可通过右键项目,选择Package/publish settings 随后…

介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具……...

介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具,可以对比每次版本有什么文件变化,并单独找出来。这样只需要上传需求的文件就可以达到版本更…

html 分页 惰性加载,懒加载实现的分页网站footer自适应

最近在做手机端,发现下拉刷新和上拉加载的jq控件很少而且自我感觉不好用,比如iscroll之类……然后自己写了个懒加载的,也很简单,最基础的代码【不喜勿喷,但蛮实用的】wap手机端懒加载分页:用之前先引用下jq…

php二级域名 同步登录,php网站单点登录--卷一(跨二级域名)

Session主要分两部分:一,是Session数据,该数据默认情况下是存放在服务器的tmp文件下的,php.ini中可以更改。二,是标志着Session数据的Session Id,Session ID,就是那个 Session 文件的文件名&…

vue seo关键词设置_「干货」SEO常识关键词选取及设置方法

在做关键词策略的时候,选取关键词是一个很重要的环节。如何选取适合自己网站而且能够带来一定效益的关键词。常见方法如下:1、趋势推测法所谓的趋势推测法就是利用即将到来的事件进行关键词的提前策划与推测。在SEO领域,获得了先机往往能够获…

优化服务器犯法吗,服务器稳定性对于SEO优化有什么影响

服务器的稳定对于一个网站的SEO优化有什么影响呢?这一点很多的站长不是很了解,很多的站长在建设网站的时候,考虑比较多的一方面就是能省一点就是一点。但是,很多的朋友并不知道在建设网站时不能省的就是网站服务器这一块。为什么这…

webmin开新网站/创建虚拟服务器失败setquota: Quota file not found

如果你在webmin后台,开新网站/创建服务器遇到如下提示,恭喜,你找对教程了。 创建虚拟服务器失败 : setquota: Quota file not found or has wrong format. setquota: Not all specified mountpoints are using quota. 可能你会不甘心&#xf…

云视通手机下载的文件存储位置_小白版丨IPFS网络怎么存储、下载文件?怎么托管网站?...

IPFS是一种用于文件存储的对等网络协议,采用的是基于内容的寻址,而非基于位置。这意味着要查找文件,我们不需要知道它在哪里(abc.com/cat.png),而是它包含的内容(QmSNssW5a9S3KVRCYMemjsTByrNNrtXFnxNYLfmDr9Vaan)——由内容的哈希…

html优化布局什么意思,HTML标签布局对seo的重要性(如:h1,p,alt等标签)

不少的SEO教程都在强调html标签的重要性,但是又有多少的网站html标签符合SEO原则呢?而且有很多的大网站都不符合这个原则;虽然说html标签的好不对网站影响不是很大,对用户来说更加无影响,因为用户不会看你的网站源代码…

我的世界服务器换披风的网站,我的世界评测_我的世界正版披风怎么换|或_游戏手机游戏-中关村在线...

【我的世界评测】我的世界正版披风怎么换。那下面给大家分享的则是我的世界正版中更换披风的教程哦~那到底怎么更换披风呢?那下面就给大家详细的介绍一下吧!如果你有心仪的作品或者心得分享的话,欢迎来游戏园投稿,大家可以点击>…

python网站开发实例 flask_python-flask框架web服务接口开发实例

一、flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。 二:安装框架 flask需要先安装再引用。pip install flask 安装成功见截图三:flask开发接口流程 用flask开发接口的流程为&am…