1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【Python网络蜘蛛】:基础 - 爬虫的基本原理

【Python网络蜘蛛】:基础 - 爬虫的基本原理

时间:2023-11-04 01:09:28

相关推荐

【Python网络蜘蛛】:基础 - 爬虫的基本原理

文章目录

爬虫概述能爬的数据JavaScript渲染的页面

爬虫概述

获取网页

在HTTP基本原理中讲了请求和响应的概念,向网站的服务器发送一个请求,服务器返回的响应体便是网页源码。关键部分即构造请求并发送给服务器,然后接收响应对其进行解析。这个过程可使用Python提供的库:urllib、requests等来完成HTTP请求操作。提起信息

获取网页源码后,接下来就是分析源码,提取我们想要的数据。通用的提取方法是采用正则表达式,另外由于网页结构具有一定的规则,所以还有一些库是根据网页节点属性、CSS选择器或XPath来提取网页信息,如Beautiful、Soup、pyquery、lxml等。保存数据

提取信息后,我们需要保存数据到某处以遍后续使用。保存数据的形式多种多样,可保存为TXT文本或JSON文本,也可以保存到数据库,如MySQL和MongoDB等,还可以保存至远程服务器,如借助SFTP进行操作等。

能爬的数据

HTML源代码JSON字符串各种扩展名文件,如CSS、JavaScript和配置文件等

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

JavaScript渲染的页面

当我们在用urllib或requests抓取网页时,得到的源码和在浏览器中看到的不一样。

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

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>例子</title></head><body><div id="content"></div></body><script src="app.js"></script></html>

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

当浏览器打开这个网页时首先加载这个HTML内容,接着引入app.js文件,JavaScript会改变HTML中的节点,想其中添加内容,最后获得完整的页面。

在用urllib和requests等库请求当前页面时,只能获得HTML代码,不会加载JavaScript文件,我们也就无法看到完整的页面内容。

对于这种情况,我们可以分析源代码后台Ajax接口,也可以使用Selenium、Splash、Pyppeteer、Playwright这样的库来模拟JavaScript渲染。

后续会详细介绍如何采集JavaScript渲染出来的网页。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。