学习爬虫的前置知识
一、前言
在学习爬虫之前,需要我们了解一些前置的知识,包括常用术语,开发流程,抓包工具,前端标签等。
二、常用术语
-
URL/url: URL 是 Uniform Resource Locator 的缩写,也就是统一资源定位符。它是一种标准化的方式来标识互联网上的资源,如网页、文件、图像等。一个典型的 URL 格式如 https://www.example.com/path/to/page.html,包含了协议(https)、域名(www.example.com)和资源路径(/path/to/page.html)等信息。URL 让用户可以轻易地访问和共享网络上的资源。
简单的介绍就是网址。比如:https://www.baidu.com/
-
API:API 是 Application Programming Interface 的缩写,指的是应用程序之间交互和通信的一种接口。API 允许不同的软件系统相互连接和交换数据。开发者可以利用 API 来创建集成不同应用的新功能和服务。常见的 API 类型有 REST API、SOAP API 等。
简单来说,就是数据包传递过程中,需要使用到的url地址。
比如:https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/nav?update_baseline=935726292670611537,当你打开这个url地址就可以发现,里面存在着我们可能需要的数据。
-
抓包: 抓包是一种网络监控和诊断技术,用于捕获和分析在计算机网络上传输的数据包。它可以帮助开发者或系统管理员了解网络流量、诊断网络问题、监测安全问题等。常见的抓包工具有 Wireshark、tcpdump 等。
简而言之,抓包就是找到网址传输数据时传输的数据包。
- 抓包工具: 就是用于抓取数据包的工具。
三、爬虫开发基本流程
近几年随着大家互联网冲浪的需求不断攀升,传统的那种后端渲染前端页面的方式已经满足不了快速迭代变化的需求了,所以基于前后端分离的应用越来越多. 大多数我们写的爬虫代码的目标站点都是这种前后端分离的应用,我建议大家可以去网上稍微瞄一下前后端分离的一些技术实现,看个大概就行,对这个前后端分离的这种应用有一些理解,在你后续写爬虫有一些帮助。
现代的网络爬虫工作流程大致可以分为以下几个步骤:
- 识别入口点:确定需要抓取数据的API入口点。这些入口点是爬虫开始抓取数据的起点,通常是一些返回JSON数据的URL。
- 构造请求:根据API文档或通过分析网络请求,构造出正确的HTTP/HTTPS请求。这包括正确的请求方法(GET、POST等)、请求头、以及必要的参数。
- 发送请求:爬虫对API入口点发起请求,等待服务器响应。对于需要认证的API,可能还需要处理登录和会话管理。
- 解析响应:服务器返回JSON或其他格式的数据。爬虫需要解析这些数据,提取有价值的信息。
- 数据处理:将提取出的数据进行清洗、转换和存储。数据可以存储在数据库、文件或其他存储系统中。
- 遍历与递归:从返回的数据中提取出新的URL或API入口点,重复上述过程,直至抓取到所需的全部数据。
关键技术点
HTTP/HTTPS协议
不知道http和https协议的可以看下MDN WEB对于HTTP的讲解 理解HTTP和HTTPS协议是开发网络爬虫的基础。这些协议定义了客户端和服务器之间如何交换数据。
请求库
- Requests:Python的Requests库是处理HTTP请求的同步库,简单易用,适合初学者。
- Aiohttp:Aiohttp是一个支持异步请求的库,可以在处理大量并发连接时提高效率。
- HTTPX:HTTPX支持同步和异步请求,是一个现代化的网络请求库,提供了丰富的功能。
解析库
自从我用了Parsel之后,我解析网页的库再也没用过其他的了,可以基于css选择器,也可以基于xpath,是从Scrapy框架中的解析库做了二次封装得来的,所以我把它推荐给你、
- Parsel:Parsel基于lxml,专为HTML/XML解析设计,简化了数据提取的流程。
浏览器自动化测试工具
优先推荐Playwright,因为现在Python的异步编程很流行,那基于异步的爬虫代码也很多,Playwright它也是支持异步调用, 并且微软开源的,更新迭代速度还行,这也是我推荐的。
- Playwright:Playwright是一个由Microsoft开发的现代化浏览器自动化库。它支持所有主流浏览器和多种语言,特别适合高效率的自动化测试和爬虫开发。
- Selenium:Selenium是一个浏览器自动化工具,可以模拟用户操作浏览器。它支持多种编程语言和浏览器,适合处理JavaScript渲染的页面。
- DrissionPage: 是一个基于 Selenium 的 Web 自动化测试框架。它提供了一个面向对象的 API,可以帮助开发者更容易地编写 Web 自动化测试脚本。
四、结语
网络爬虫技术涉及广泛,从基本的HTTP/HTTPS协议到复杂的页面解析和浏览器自动化。掌握这些技术和工具,可以帮助开发者有效地从互联网上抓取数据。随着技术的发展,还会有更多先进的工具出现,为网络爬虫开发提供更多可能性。
有任何问题欢迎大家的评论和指正。再次声明,本专栏只做技术探讨,严谨商用,恶意攻击等。
这是我的 GitHub 主页:Rosyrain (github.com),里面有一些我学习时候的笔记或者代码。
欢迎大家Follow/Star/Fork三连。
参考文献来源:NanmiCoder/CrawlerTutorial: 爬虫入门、爬虫进阶、高级爬虫 (github.com)