【Datawhale组队学习202506】零基础学爬虫 01 初始爬虫
系列文章目录
01 初始爬虫
文章目录
- 系列文章目录
- 前言
- 1 爬虫和Python
- 2 爬虫的矛盾
- 2.1 爬虫与反爬
- 2.2 robots
- 核心字段
- 重要规则说明
- 非标准扩展指令
- 协议生效条件
- 局限性
- 验证工具
- 2.3 一个爬虫demo
- 3 Web请求与HTTP协议
- 3.1 一个web请求的全过程
- 3.2 判断页面源代码位置
- 3.3 HTTP 协议
- HTTP 请求
- HTTP 响应
- 3.4 requests 模块入门
- 总结
前言
- Datawhale是一个专注于AI与数据科学的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员
- 零基础网络爬虫技术
1 爬虫和Python
爬虫就是通过编写程序来爬取互联网上的图片、音频、视频、数据等。
- Python 是一门上手快、语法简单的编程语言。
2 爬虫的矛盾
2.1 爬虫与反爬
-
首先,爬虫在法律上不是被禁止的。
-
爬虫分为:
- 善意爬虫,不破坏被爬取的网站的资源,正常访问,一般频率不高,不窃取用户隐私;
- 恶意爬虫,影响⽹站的正常运营如抢票,秒杀,疯狂请求⽹站资源造成⽹站宕机;
-
因此网站有了反爬机制,制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。
-
爬虫程序就有了反反爬策略,制定相关的策略或者技术手段,破解网站中具备的反爬机制。
-
最后,双方制定君子协议:
robots 协议
。 -
根据协议,网站管理员可以在网站域名的根目录下放一个
robots.txt
的文本文件,里面可以指定不同的网络爬虫能访问的页面和禁止访问的页面。网络爬虫在采集这个网站之前,首先获取到这个文件,然后解析到其中的规则,最后根据规则来采集网站的数据。
2.2 robots
robots.txt
文件由一组规则组成,每组规则以User-agent
开头,后接允许或禁止的路径规则。
核心字段
- User-agent :指定规则适用的爬虫名称(如
*
表示所有爬虫)。 - Disallow :指定禁止爬虫访问的路径(路径需为绝对路径)。
- Allow :指定允许爬虫访问的路径(某些搜索引擎支持,但非标准协议的一部分)。
- Sitemap :告知爬虫网站的XML站点地图位置(帮助索引内容)。
重要规则说明
- 路径匹配 :
- 使用前缀匹配(如
Disallow: /admin
会禁止/admin/
、/admin.php
等)。 - 支持通配符(如
*
匹配任意字符,$
匹配路径结尾,但需搜索引擎支持)。
- 使用前缀匹配(如
- 大小写敏感 :路径区分大小写(如
/Images/
和/images/
是不同的)。 - 优先级 :
Allow
规则通常优先于Disallow
(若同时存在冲突规则)。 - 最长匹配原则 :当多条规则冲突时,选择最长匹配的路径规则。
非标准扩展指令
部分搜索引擎支持额外指令(非协议官方标准):
- Crawl-Delay :设置爬虫抓取间隔(如
Crawl-Delay: 10
表示每10秒请求一次)。 - Host :指定首选域名(如
Host: www.example.com
)。 - Clean-param :声明某些参数不影响页面内容(如
Clean-param: sessionid /index.php
)。
协议生效条件
- 文件必须位于网站根目录(如
https://www.example.com/robots.txt
)。 - 文件编码需为 UTF-8 ,且无BOM头。
- 遵循协议的爬虫会遵守规则,但恶意爬虫可能无视协议。
局限性
- 不保证隐私 :
robots.txt
无法阻止直接访问,敏感内容需通过身份验证或其他方式保护。 - 动态URL处理 :无法完全阻止参数生成的动态页面被爬取。
- 缓存延迟 :爬虫可能不会实时更新规则,需等待重新抓取。
验证工具
- Google Search Console、Bing Webmaster Tools 提供
robots.txt
测试功能。 - 在线工具(如 Robots.txt Checker )可验证规则是否正确。
2.3 一个爬虫demo
- 获取百度首页
3 Web请求与HTTP协议
3.1 一个web请求的全过程
![[Pasted image 20250618162214.png]]
3.2 判断页面源代码位置
- 上面是服务器渲染,即服务器直接把数据全部写入到html中。
- 下面是客户端渲染,⼀般是第⼀次请求服务器返回⼀堆HTML框架结构。然后再次请求到真正保存数据的服务器,由这个服务器返回数据,最后在浏览器上对数据进⾏加载。
![[Pasted image 20250618162420.png]]
3.3 HTTP 协议
协议:就是两个计算机之间为了能够流畅的进⾏沟通⽽设置的⼀个君⼦协定。
- 常⻅的协议有TCP/IP,SOAP协议,HTTP协议,SMTP协议等等。
HTTP协议:Hyper Text Transfer Protocol(超⽂本传输协议)的缩写,是⽤于从万维⽹(WWW:World Wide Web )服务器传输超⽂本到本地浏览器的传送协议。
HTTP 请求
- 有三块内容:
- 请求⾏ -> 请求⽅式(get/post) 请求url地址 协议
- 请求头 -> 放⼀些服务器要使⽤的附加信息
- 请求体 -> ⼀般放⼀些请求参数
请求⽅式:
-
GET
: 显示提交 -
POST
: 隐示提交 -
请求头中最常⻅的⼀些重要内容(爬⾍需要):
User-Agent
:请求载体的身份标识(⽤啥发送的请求)Referer
:防盗链(这次请求是从哪个⻚⾯来的?反爬会⽤到)cookie
:本地字符串数据信息(⽤户登录信息,反爬的token)
HTTP 响应
- 也有三块内容:
- 状态⾏ -> 协议 状态码
- 响应头 -> 放⼀些客户端要使⽤的⼀些附加信息
- 响应体 -> 服务器返回的真正客户端要⽤的
- 响应头中⼀些重要的内容:
Content-Type
:返回内容的内容类型,比如Content-Type: text/html; charset=utf-8
- 各种神奇的莫名其妙的字符串(这个需要经验了,⼀般都是token字样,防⽌各种攻击和反爬)
3.4 requests 模块入门
- 常⽤的抓取⻚⾯的模块通常使⽤⼀个⽐
urllib
还要简单的第三⽅模块requests
。
总结
- Python爬虫的入门介绍。