网页qq抓取什么原理(简单来说,爬虫就是获取网页爬虫后就是分析网页源代码 )

优采云 发布时间: 2022-01-20 11:11

  网页qq抓取什么原理(简单来说,爬虫就是获取网页爬虫后就是分析网页源代码

)

  简单地说,爬虫是一个自动程序,它获取网页并提取和保存信息。

  例如,我们可以将互联网比作一个大型网络,而爬虫(即网络爬虫)是在网络上爬行的蜘蛛。将网络的节点比作网页,爬取它相当于访问该页面并获取其信息。节点之间的连接可以比作网页与网页的链接关系,这样蜘蛛经过一个节点后,可以继续沿着该节点连接爬行到下一个节点,即继续获取后续的网页通过一个网页,这样整个网页的节点都可以被蜘蛛爬取,并且可以抓取到网站的数据。

  1. 获取网页

  爬虫要做的第一个工作就是获取网页,这里是网页的源代码。源代码中收录了网页的一些有用信息,所以只要得到源代码,就可以从中提取出想要的信息。向网站的服务器发送请求,返回的响应体就是网页的源代码。那么,最关键的部分就是构造一个请求并发送给服务器,然后接收响应并解析出来,那么这个过程如何实现呢?你不能手动截取网页的源代码,对吧?

  我们可以使用库来帮助我们实现 HTTP 请求操作。比如常用的Python语言提供了很多库来帮助我们实现这个操作,比如urllib、requests等等。请求和响应都可以用类库提供的数据结构来表示。得到响应后,我们只需要解析数据结构的Body部分就可以得到网页的源代码,这样我们就可以使用程序来实现获取网页的过程了。

  2. 提取信息

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

  另外,因为网页的结构有一定的规律,所以也有一些库是根据网页节点属性、CSS选择器或者XPath来提取网页信息的,比如Beautiful Soup、pyquery、lxml等。使用这些库,我们可以高效快速的提取网页信息,比如节点属性、文本值等。提取信息是爬虫非常重要的一个环节,它可以把杂乱的数据整理好,方便我们后期对数据进行处理和分析。

  3. 保存数据

  提取信息后,我们一般将提取的数据保存在某处以备后用。这里的保存有多种形式,比如简单的保存为TXT文本或者JSON文本,或者保存到数据库,比如MySQL和MongoDB,或者保存到远程服务器,比如使用SFTP操作。

  4. 自动化程序

  说到自动化程序,我的意思是爬虫可以代替人类执行这些操作。首先,我们当然可以手动提取这些信息,但是如果当量特别大或者想要快速获取大量数据,还是得使用程序。爬虫是代表我们完成爬取工作的自动化程序。可以在爬取过程中进行各种异常处理、错误重试等操作,保证爬取持续高效运行。

  - 网络爬虫可以抓取什么样的数据 -

  我们可以在网页中看到各种各样的信息,最常见的是常规网页,它们对应的是HTML代码,而最常见的爬取就是HTML源代码。

  此外,有些网页可能会返回 JSON 字符串而不是 HTML 代码(大部分 API 接口都是这种形式)。这种格式的数据易于传输和解析,也可以被捕获,数据提取更方便。

  此外,我们还可以看到图片、视频、音频等各种二进制数据。使用爬虫,我们可以抓取这些二进制数据,并保存为对应的文件名。

  此外,您还可以看到具有各种扩展名的文件,例如 CSS、JavaScript 和配置文件。这些实际上是最常见的文件。只要它们可以在浏览器中访问,您就可以抓取它们。

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

  - JavaScript 呈现页面 -

  有时候,当我们用urllib和requests抓取网页时,得到的源码其实和我们在浏览器中看到的不一样。这是一个非常普遍的问题。如今,越来越多的网页使用 Ajax 和前端模块化工具构建。整个网页可能会被 JavaScript 渲染,这意味着原创的 HTML 代码只是一个空壳,例如:

  

This is a Demo

  body节点中只有一个id为container的节点,但是需要注意的是在body节点之后引入了app.js,负责渲染整个网站。在浏览器中打开页面时,会先加载HTML内容,然后浏览器会发现其中引入了一个app.js文件,然后再去请求该文件。获取文件后,会执行 JavaScript 代码,JavaScript 改变 HTML 中的节点,添加内容,最终得到一个完整的页面。

  但是当用 urllib 或 requests 等库请求当前页面时,我们得到的只是这段 HTML 代码,它不会帮助我们继续加载这个 JavaScript 文件,所以我们在浏览器中看不到内容。这也解释了为什么有时我们得到的源代码与我们在浏览器中看到的不同。因此,使用基本的HTTP请求库得到的源代码可能与浏览器中的页面源代码不一样。对于这样的情况,我们可以分析它的后台Ajax接口,或者使用Selenium、Splash等库来模拟JavaScript渲染。

  多线程。

  多进展。

  分散式。

  在这里聊聊爬行动物相关的法律法规。

  爬虫是一种科技产品,爬虫代码本身并不违法。但在程序运行过程中,可能会对他人运营的网站造成损害,爬取的数据可能涉及隐私或保密,数据的使用也可能引起一些法律纠纷。草案涉及的几个方面)。

  关键词:非法获取计算机信息系统数据、不正当竞争、民事侵权、非法窃取用户个人信息。相应的法律规定如下:

  PS:使用技术手段绕过运营商网站的防爬虫措施是违法的。

  PPS:《中华人民共和国网络安全法》是每个爬虫工程师都应该知道的。

  以上引自:

  @崔庆才丨京蜜写的《Python 3 Web爬虫开发实践》(pp.93-94);@asyncins(魏世东)写的《Python 3反爬虫原理与绕过实践》(pp376- 377)。

  如果你是开始使用网络爬虫的话,建议从《Python 3 Web Crawler Development》这本书开始。小崔老师从2015年开始接触爬虫,在博客上分享了自己的学习总结。目前,该博客的访问量已超过一百万。本书全面介绍了使用Python 3开发网络爬虫的技巧点。干货满满,案例丰富,大量源码让你上手更轻松。是最受读者欢迎的Python爬虫书~

  

  在大数据时代,所有的企业都离不开数据。随着爬虫的增多,反爬虫的水平也在不断提高。《Python 3 反爬虫原理及绕过实战》从爬虫和开发者的角度描述了爬虫与反爬虫的对抗,从简单到介绍了目前市面上使用的大部分反爬虫方法的知识。深。从分析到绕过,一步步探索反爬虫的细节。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线