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

爬虫概述


  • 获取网页
    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渲染出来的网页。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街 三 仔

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值