怎样抓取网页数据(1.爬虫概述可能上面的说明还是难以具体地描述爬虫)
优采云 发布时间: 2022-03-31 15:03怎样抓取网页数据(1.爬虫概述可能上面的说明还是难以具体地描述爬虫)
爬虫,也就是网络爬虫,我们可以把互联网比作一个大网,而爬虫就是在网上爬行的蜘蛛,我们可以把网页的节点比作网页,爬它就相当于访问了page 获取到它的信息后,可以将节点之间的连接比作网页之间的链接关系,这样蜘蛛就可以在经过一个节点后继续沿着该节点连接爬行到下一个节点,即继续获取后续网页通过一个网页,使得整个网页的节点都可以被蜘蛛爬取,从而可以抓取到网站的数据。
1. 爬虫概述
在上面的描述中可能很难描述爬虫是什么。简而言之,爬虫是获取网页并提取和保存信息的自动化程序。接下来,我们将解释每一点:
获取网页
爬虫要做的第一个工作就是获取网页,获取网页的地方就是获取网页的源代码。源代码中一定收录了网页的一些有用信息,所以只要得到源代码,我们就可以从中提取出我们想要的东西。信息。
前面我们谈到了请求和响应的概念。我们向网站的服务器发送一个Request,返回的Response的Body就是网页的源代码。所以最关键的部分就是构造一个Request并发送给服务器,然后接收Response并解析出来。这个过程如何实施?不能手动截取网页源代码?
不用担心,Python提供了很多库来帮助我们实现这个操作,比如Urllib、Requests等。我们可以使用这些库来帮助我们实现HTTP请求操作,Request和Response可以用提供的数据结构来表示类库,得到Response后,我们只需要解析数据结构的Body部分,即获取网页的源代码,这样就可以使用程序来实现获取网页的过程.
好的
我们在第一步得到了网页的源代码后,接下来的工作就是分析网页的源代码,提取出我们想要的数据。最常用的方法是使用正则表达式进行提取,这是一种通用的方法。但是构造正则表达式是复杂且容易出错的。
另外,由于网页的结构有一定的规则,也有一些库是根据网页节点属性、CSS选择器或者XPath来提取网页信息的,比如BeautifulSoup、PyQuery、LXML等,这些库都可以使用高效快速地提取网页。信息,例如节点属性、文本值等。
提取信息是爬虫非常重要的一个环节,它可以让杂乱无章的数据变得清晰有条理,方便我们后期对数据进行处理和分析。
保存数据
提取信息后,我们一般将提取的数据保存在某处,以供后续数据处理。保存有多种形式,比如简单的保存为TXT文本或者Json文本,或者保存到数据库,比如MySQL、MongoDB等,或者保存到远程服务器,比如使用Sftp操作。
自动化程序
谈到自动化,这意味着爬虫可以代替人类执行这些操作。首先,我们可以手动提取这些信息,但是如果当量特别大或者想要快速获取大量数据,还是得使用程序。因此,爬虫是一个自动化的程序,它代表我们完成爬取数据的工作。可以在爬取过程中进行各种异常处理、错误重试等操作,保证爬取持续高效运行。
2. 我可以捕获什么样的数据
我们可以在网页中看到各种各样的信息,最常见的是常规网页,它们都对应着HTML代码,而最常见的爬取就是爬取HTML源代码。
此外,某些网页可能会返回 Json 字符串而不是 HTML 代码。大多数API接口都采用这种形式,方便数据传输和分析。这种数据也可以抓取,数据提取更方便。
此外,我们还可以看到各种二进制数据,比如图片、视频、音频等,我们可以使用爬虫抓取它们的二进制数据,并保存为对应的文件名。
此外,我们还可以看到各种扩展名的文件,比如CSS、JavaScript、配置文件等,这些其实是最常见的文件,只要在浏览器中访问,我们就可以抓取。
以上内容其实是对应各自的URL,是基于HTTP或HTTPS协议的。只要是这种数据爬虫,都可以爬取。
3. JavaScript 渲染页面
有时当我们用 Urllib 或 Requests 抓取网页时,我们得到的源代码实际上与我们在浏览器中看到的不同。
这个问题是一个非常普遍的问题。现在越来越多的网页使用Ajax和前端模块化工具来构建网页。整个网页可能会被 JavaScript 渲染,这意味着原创的 HTML 代码是一个空壳。例如:
这是一个演示
Python资源分享qun 784758214,包括安装包、PDF、学习视频,这里是Python学习者的聚集地,零基础,进阶,欢迎大家
body节点中只有一个id为container的节点,但是注意在body节点之后引入了一个app.js,负责渲染整个网站。
浏览器在打开这个页面的时候会先加载html内容,然后浏览器会发现里面引入了一个app.js文件,然后浏览器就会请求这个文件,拿到文件后就会执行. JavaScript 代码,而 JavaScript 会改变 HTML 中的节点,向内添加内容,最终得到完整的页面。
但是当使用 Urllib 或 Requests 等库请求当前页面时,我们得到的只是这段 HTML 代码,它不会帮助我们继续加载 JavaScript 文件,所以我们不会在浏览器中看到我们看到的内容。
这也解释了为什么有时我们得到的源代码与我们在浏览器中看到的不同。
所以使用基本的HTTP请求库得到的结果源代码可能与浏览器中的页面源代码不一样。在这种情况下,我们可以分析它的后台 Ajax 接口,或者使用 Selenium 和 Splash 等库来模拟 JavaScript 渲染,这样我们就可以爬取 JavaScript 渲染的网页内容。
稍后我们将详细介绍 JavaScript 渲染页面的 采集 方法。
4. 结论
本节介绍爬虫的一些基本原理,了解以上内容可以帮助我们以后编写爬虫时更加得心应手。