网页抓取数据百度百科(什么是爬虫爬虫:请求网站并提取数据的自动化程序)
优采云 发布时间: 2022-03-04 12:05网页抓取数据百度百科(什么是爬虫爬虫:请求网站并提取数据的自动化程序)
一、什么是爬虫
爬虫:请求网站并提取数据的自动化程序
百科全书:网络爬虫(也称为网络蜘蛛、网络机器人,在FOAF社区中,更常被称为网页追逐者)是根据一定的规则自动爬取万维网上信息的程序或脚本. 其他不太常用的名称是 ant、autoindex、emulator 或 worm。
如果我们把互联网比作一个大蜘蛛网,数据存储在蜘蛛网的每个节点中,而爬虫就是一只小蜘蛛,
沿着网络爬取自己的猎物(数据)的爬虫是指:向网站发起请求,获取资源后分析提取有用数据的程序;
从技术上讲,就是通过程序模拟浏览器请求站点的行为,将站点返回的HTML代码/JSON数据/二进制数据(图片、视频)爬取到本地,然后提取您需要的数据并将其存储以供使用;
二、爬虫发起请求的基本流程:通过HTTP库向目标站点发起请求,即发送一个Request,请求中可以收录额外的headers等信息,等待服务器回应。获取响应内容:如果服务器能正常响应,就会得到一个Response。Response的内容就是要获取的页面的内容。类型可以是 HTML、Json 字符串、二进制数据(如图片和视频)等类型。解析内容:获取的内容可能是HTML,可以用正则表达式和网页解析库来解析。可能是Json,可以直接转换成Json对象解析,也可能是二进制数据,可以保存或者进一步处理。保存数据:以多种形式保存,可以保存为文本,也可以保存到数据库,或以特定格式保存文件。三、Request和ResponseRequest:浏览器向URL所在的服务器发送消息。这个过程称为 HTTP 请求。响应:服务器收到浏览器发送的消息后,可以根据浏览器发送的消息内容进行处理,然后将消息发送回浏览器。此过程称为 HTTP 响应。浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后显示出来。它可以根据浏览器发送的消息内容进行处理,然后将消息发送回浏览器。此过程称为 HTTP 响应。浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后显示出来。它可以根据浏览器发送的消息内容进行处理,然后将消息发送回浏览器。此过程称为 HTTP 响应。浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后显示出来。
四、Request详细请求方式:主要有GET和POST两种,还有HEAD、PUT、DELETE、OPTIONS等。 Request URL:URL的全称是Uniform Resource Locator。例如,网页文档、图片、视频等都可以由URL唯一确定。请求头:收录请求过程中的头信息,如User-Agent、Host、Cookies等信息。请求体:请求中携带的附加数据,如表单提交时的表单数据五、响应详解响应状态:响应状态有多种,如200表示成功,301表示重定向,404表示page not found, 502 for server error 响应头:如内容类型、内容长度、服务器信息、设置cookie等 响应体:最重要的部分,包括请求资源的内容,比如网页HTML、图片二进制数据等六、可以抓取哪些数据web文本:比如HTML文档、Json格式文本等 图片:获取到的二进制文件保存为图片格式。视频:两者都是二进制文件,可以保存为视频格式。以此类推:只要能请求,就能得到。七、解析方法直接处理捕获Json解析正则表达式BeautifulSoupPyQueryXPath出现的问题八、 两者都是二进制文件,可以保存为视频格式。以此类推:只要能请求,就能得到。七、解析方法直接处理捕获Json解析正则表达式BeautifulSoupPyQueryXPath出现的问题八、 两者都是二进制文件,可以保存为视频格式。以此类推:只要能请求,就能得到。七、解析方法直接处理捕获Json解析正则表达式BeautifulSoupPyQueryXPath出现的问题八、
问:为什么我得到的与浏览器看到的不同?
答:网页由浏览器解析渲染,加载CSS和JS等文件解析渲染网页,这样我们就可以看到漂亮的网页了,而我们抓取的文件只是一些代码,CSS无法调用文件,从而无法显示样式。那么就会出现错位等问题。
Q:如何解决 JavaScript 渲染的问题?
A:分析Ajax请求、Selenium/WebDriver、Splash、PyV8、Ghost.py等库
九、优秀爬虫的特征
一个优秀爬虫的特性可能针对不同的应用有不同的实现方式,但是一个实用的爬虫应该具备以下特性。
01高性能
互联网上的网页数量非常庞大。因此,爬虫的性能非常重要。这里的性能主要是指爬虫下载网页的爬取速度。常用的评价方法是以爬虫每秒可以下载的网页数量作为性能指标。单位时间内可以下载的网页越多,爬虫的性能就越高。
为了提高爬虫的性能,设计时程序访问磁盘的操作方式和具体实现时数据结构的选择至关重要。例如,对于待爬取的URL队列和已爬取的URL队列,由于URL的数量非常多,不同实现方式的性能非常重要。性能差异很大,所以高效的数据结构对爬虫性能影响很大。
02 可扩展性
即使单个爬虫的性能很高,将所有网页下载到本地仍然需要很长时间。为了尽可能地缩短爬取周期,爬虫系统应该具有良好的可扩展性,即很容易增加 Crawl 的服务器和爬虫的数量来实现这一点。
目前实际的大型网络爬虫必须以分布式方式运行,即多台服务器专门进行爬虫,每台服务器部署多个爬虫,每个爬虫运行多线程,通过多种方式增加并发。对于大型搜索引擎服务商来说,数据中心也可能会在全球、不同区域部署,爬虫也被分配到不同的数据中心,这对于提升爬虫系统的整体性能非常有帮助。
03 鲁棒性
当爬虫想要访问各种类型的网站服务器时,可能会遇到很多异常情况,比如网页的HTML编码不规则,被爬取的服务器突然崩溃,甚至出现爬虫陷阱。爬虫能够正确处理各种异常情况是非常重要的,否则它可能会时不时停止工作,这是难以忍受的。
从另一个角度来说,假设爬虫程序在爬取过程中死掉了,或者爬虫所在的服务器宕机了,一个健壮的爬虫应该可以做到。当爬虫再次启动时,它可以恢复之前爬取的内容和数据结构。不必每次都从头开始做所有的工作,这也是爬虫健壮性的体现。
04友善
爬虫的友好性有两层含义:一是保护网站的部分隐私,二是减少被爬取的网站的网络负载。爬虫爬取的对象是各种类型的网站。对于网站的拥有者来说,有些内容不想被所有人搜索到,所以需要设置一个协议,告诉爬虫哪些内容不是什么内容。允许爬行。目前,实现这一目标的主流方法有两种:爬虫禁止协议和网页禁止标记。
爬虫禁止协议是指网站的拥有者生成的指定文件robot.txt,放在网站服务器的根目录下。该文件表示网站中哪些目录下面的网页不允许被爬虫爬取。在爬取网站的网页之前,友好的爬虫必须先读取robot.txt文件,并且不会下载被禁止爬取的网页。
网页禁止标签一般在网页的HTML代码中通过添加metaentry-footer">
爬虫基本原理资料