爬虫抓取网页数据(总不能手工去网页源码吧(1)_光明网(组图))
优采云 发布时间: 2021-09-17 09:19爬虫抓取网页数据(总不能手工去网页源码吧(1)_光明网(组图))
我们可以把互联网比作一个大网络,而爬虫(即网络爬虫)就是在互联网上爬行的蜘蛛。通过比较web节点和web页面,爬虫会爬到该页面,这相当于访问该页面并获取其信息。节点之间的连接可以比作网页之间的链接关系。这样,爬行器通过一个节点后,可以继续沿着节点连接爬行到下一个节点,也就是说,可以继续通过一个网页获取后续的网页,这样爬行器就可以对整个网络的节点进行爬行,并捕获网站数据
1.爬行动物概述
简而言之,crawler是一个自动获取网页、提取和保存信息的程序。以下是概述
(1)get网页)
爬虫应该做的第一件事是获取网页。以下是该网页的源代码。源代码收录一些有用的网页信息,因此只要您获得源代码,就可以从中提取所需的信息
我们在前面讨论了请求和响应的概念。当您向网站server发送请求时,返回的响应主体是网页源代码。因此,最关键的部分是构造一个请求并将其发送到服务器,然后接收响应并解析它。如何实施这一过程?您无法手动截取网页源代码
不用担心,python提供了许多库来帮助我们实现此操作,例如urllib、请求等。我们可以使用这些库来帮助我们实现HTTP请求操作。请求和响应可以由类库提供的数据结构表示。得到响应后,只需解析数据结构的主体部分即可得到网页的源代码,这样就可以用程序实现获取网页的过程
(2)提取信息)
获得网页源代码后,下一步是分析网页源代码并提取所需的数据。首先,最常用的方法是使用正则表达式提取,这是一种通用的方法,但在构造正则表达式时非常复杂且容易出错
此外,由于网页的结构有一定的规则,因此有一些库可以根据网页节点属性、CSS选择器或XPath提取网页信息,如beautiful soup、pyquery、lxml等。使用这些库,我们可以高效、快速地提取网页信息,如节点属性、,文本值等
信息提取是爬虫的重要组成部分。它可以使杂乱的数据组织和清晰,以便我们以后可以处理和分析数据
(3)save data)
在提取信息之后,我们通常将提取的数据保存在某个地方以供后续使用。有很多方法可以保存它,例如简单地将其保存为TXT文本或JSON文本,将其保存到数据库(如MySQL和mongodb),或将其保存到远程服务器(如使用SFTP操作)
(4)automated program)
说到自动化程序,这意味着爬虫程序可以代替人来完成这些操作。首先,我们可以手动提取这些信息,但如果等价物非常大,或者您想要快速获取大量数据,则必须使用程序。爬虫程序是代替我们完成爬虫工作的自动化程序,它可以执行爬虫过程处理、错误重试等操作中的各种异常,以确保爬虫的持续高效运行
2.可以捕获什么样的数据
我们可以在网页上看到各种各样的信息。最常见的是与HTML代码相对应的常规网页,最常见的捕获是HTML源代码
此外,一些网页可能会返回JSON字符串而不是HTML代码(大多数API接口都采用这种形式)。这种格式的数据便于传输和解析。它们也可以被抓取,数据提取更方便
此外,我们还可以看到各种二进制数据,如图片、视频和音频。使用爬虫,我们可以抓取这些二进制数据并将它们保存到相应的文件名中
此外,您还可以看到具有各种扩展名的文件,例如CSS、JavaScript和配置文件。事实上,这些也是最常见的文件。只要您可以在浏览器中访问它们,就可以抓取它们
事实上,上述内容对应于各自的URL,并且基于HTTP或HTTPS协议。只要是这样的数据,爬虫就可以抓取它
3.JavaScript呈现页面
有时候,当我们抓取一个收录urllib或请求的网页时,我们得到的源代码实际上与我们在浏览器中看到的不同
这是一个非常普遍的问题。如今,越来越多的web页面是通过Ajax和前端模块工具构建的。整个网页可能由JavaScript呈现,也就是说,原创HTML代码是一个空壳,例如:
This is a Demo
body节点中只有一个ID为container的节点,但需要注意的是app.js是在body节点之后引入的,它负责整个网站的渲染@
在浏览器中打开此页面时,将首先加载HTML内容,然后浏览器将发现其中引入了app.js文件,然后它将请求此文件。获取文件后,将执行JavaScript代码,JavaScript将更改HTML中的节点,向其中添加内容,最后获得完整的页面
但是,当使用库(如urllib或requests)请求当前页面时,我们得到的只是HTML代码,这不会帮助我们继续加载JavaScript文件,因此我们无法在浏览器中看到内容
这也解释了为什么有时我们会从浏览器中看到不同的源代码
因此,使用基本HTTP请求库获得的源代码可能与浏览器中的页面源代码不同。在本例中,我们可以分析其背景Ajax接口,或者使用selenium和splash等库来模拟JavaScript呈现
稍后,我们将介绍如何采集JavaScript呈现网页
本节介绍了爬虫的一些基本原理,这些原理可以帮助我们以后更轻松地编写爬虫
本资源来源于崔庆才的个人博客《精米:Python 3网络爬虫开发实用教程》|精米