爬虫的基本原理

基本原理

可以把网页与网页之间的链接关系比作节点中的连线,爬虫可以根据网页中的关系获取后续的网页,当整个网站涉及的页面全部被爬虫访问到后,网站的数据就被访问下来了。

1.爬虫概述

简单点讲,爬虫就是获取网页并提取和保存信息的自动化程序

总结原理就是:构造发送请求->获取网页->解析提取->存储

  • 获取网页
      获取网页这里指的就是获取网页源代码,因为源代码包含网页的部分有用信息。
      向网站的服务器发送一个请求,服务器返回的响应体便是网页源代码。所以爬虫获取网页最关键的部分就是构造一个请求并发送给服务器,然后接收到响应并对其进行解析。
      python对此提供了许多库,可以帮助我们实现,比如:urllib、requests等,我们可以用这些库帮助我们完成http请求操作。
  • 提取信息
      发送请求接收到响应体中的源代码后,接下来就是分析源代码,从中提取到我们想要的数据。最通用也是比较万能的方法就是正则表达式,但是构造正则表达式比较复杂也容易比较出错。
      另外可以根据网页结构的规则,可以根据网页节点属性、CSS选择器、xpath来提取网页信息,如Beautiful Soup、pyquery、lxml等。使用这些库,可以高效的从源代码中提取网页信息,如节点的属性、文本值等。
  • 保存数据
      提取到信息,后面考虑的就是要如何保存它来方便后续使用。保存数据形式多种多样,可以简单的保存为TXT文本、JSON文本、CSV文件、XLSX文件等,也可以保存到数据库,如MySQL、MongoDB等,还可以保存至远程服务器,如借助SFTP操作等。
  • 自动化程序
      爬虫可以替代人来完成上述操作,在爬取的过程中可以进行各种异常处理、错误重试等操作,确保爬取持续高效的运行。

2.能爬怎样的数据

网页中存在各种各样的信息,最常见的就是常规网页,这些网页对应着HTML代码,最长抓取的就是HTML源代码。

另外可能有的网页中返回的不是HTML代码,而是一个JSON字符串(API接口大多是这种形式),这种格式方便传输和解析。爬虫同样可以爬取这些数据,而且解析提取会更加方便。

网页中还包含各种二进制数据,利用爬虫我们可以保存这些二进制数据,然后保存成对应的文件名。

除了上述数据,网页中还存在各种扩展名文件,如CSS、JavaScript和配置文件等。这些文件只要在浏览器里可以访问到就可以抓取下来。

上述内容其实都有对应的URL,URL基于HTTP/HTTPS协议,只要是这种数据,爬虫都可以抓取。

3.JavaScript渲染的页面

有时候,我们利用urllib、requests抓取网页时,得到的源代码和浏览器中实际看到的并不一样。

这种问题其实十分常见,因为现在越来越多的网页时采用Ajax、前端模块化工具构建的,可能整个网页都是JavaScript渲染出来的,也就是说HTML代码实际上就是一个空壳。

浏览器打开这种页面时,首先会加载HTML内容,接着浏览器会发现其中引入了js文件,然后就会请求获取该文件,执行其中的JavaScript代码,JavaScript会改变HTML中的节点,向其中添加内容,最后得到完整页面。

用urllib、requests请求这种页面时,得到的只是HTML代码,它不会继续加载JavaScript文件,所以也就无法得到完整网页内容。

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

相关推荐
喜欢猪猪5 分钟前
Django:从入门到精通
后端·python·django
糖豆豆今天也要努力鸭11 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
何大春27 分钟前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式
在下不上天35 分钟前
Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复
大数据·开发语言·python
SEVEN-YEARS39 分钟前
深入理解TensorFlow中的形状处理函数
人工智能·python·tensorflow
EterNity_TiMe_44 分钟前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
Suyuoa1 小时前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
好看资源平台2 小时前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
进击的六角龙2 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂2 小时前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python