当前位置: 首页 > news >正文

【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 请求

  • 有三块内容:
  1. 请求⾏ -> 请求⽅式(get/post) 请求url地址 协议
  2. 请求头 -> 放⼀些服务器要使⽤的附加信息
  3. 请求体 -> ⼀般放⼀些请求参数

请求⽅式:

  • GET: 显示提交

  • POST: 隐示提交

  • 请求头中最常⻅的⼀些重要内容(爬⾍需要):

    • User-Agent:请求载体的身份标识(⽤啥发送的请求)
    • Referer:防盗链(这次请求是从哪个⻚⾯来的?反爬会⽤到)
    • cookie:本地字符串数据信息(⽤户登录信息,反爬的token)

HTTP 响应

  • 也有三块内容:
  1. 状态⾏ -> 协议 状态码
  2. 响应头 -> 放⼀些客户端要使⽤的⼀些附加信息
  3. 响应体 -> 服务器返回的真正客户端要⽤的
  • 响应头中⼀些重要的内容:
    • Content-Type:返回内容的内容类型,比如Content-Type: text/html; charset=utf-8
    • 各种神奇的莫名其妙的字符串(这个需要经验了,⼀般都是token字样,防⽌各种攻击和反爬)

3.4 requests 模块入门

  • 常⽤的抓取⻚⾯的模块通常使⽤⼀个⽐urllib还要简单的第三⽅模块requests

总结

  • Python爬虫的入门介绍。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/253569.html

相关文章:

  • 17.group by分组统计
  • 华为OD-2024年E卷-中文分词模拟器[200分] -- python
  • 1、做中学 | 一年级上期 Golang简介和安装环境
  • 基于Android的打印系统的设计与实现
  • PHP vs Python (Flask/Django) vs Java (SpringBoot) vs Vue:2024全栈技术终极对决
  • 最大公约数
  • UML建模
  • Ubuntu 20.04离线安装Nvidia-docker
  • 2025年全国技术贸易创新实践案例:AI编辑助手平台助力“一带一路”数字媒体产业高质量发展
  • MySQL-多表查询深度解析与实战指南
  • 如何计算股票复权因子与复权行情
  • iOS端网页调试 debug proxy策略:项目中的工具协同实践
  • 2025年渗透测试面试题总结-渗透测试工程师(题目+回答)
  • 正态分布:AI大模型中的概率统计基石
  • [特殊字符] NarratoAI:AI驱动的短剧解说视频自动化生成工具整合包
  • ChromaDB深度技术研究报告
  • 分治算法之归并排序
  • MybatisPlus深入学习
  • Ubuntu 降低待机功耗
  • EPLAN P8 2.9 如何使用.step格式3D文件绘制3D安装布局图
  • 3D制作与数字媒体领域的技术突破
  • powershell 获取 用户及进程列表
  • C++map和set类(简介)
  • BitsAndBytes(简称 BnB)是一个用于“压缩”大语言模型的工具包
  • Pyspark中的int
  • 19. 双向链表
  • 【Pandas】pandas DataFrame unstack
  • 一站式用AI编程神奇Cursor/Trae(VScode环境)开发运行Scala应用
  • 最小生成树算法的解题思路与 C++ 算法应用
  • aws各类服务器编号