【学习路线】Python爬虫 详细知识点学习路径(附学习资源)

小狮妹 2024-12-26 18:41:50 浏览数 (515)
反馈

符号表解释:

可根据知识点前的符号按需选学,并获取知识点描述和学习资源。

 必学:核⼼知识点,经常⽤到。

建议学:重要知识点,专业⼈⼠的基⽯。

⾯试重点:经常出现的⾯试知识点。

可有可⽆:边缘区域,不是必须探索的地⽅。

知识描绘:知识点描述,快速理解。

学习资源:关联的学习资源。

学习⽬标:阶段性⽬标。


学习路线:爬虫

一、爬虫基础

1. 爬虫概述:

描述: 自动化程序,用于从网页提取信息和数据。

目标案例: 新闻聚合器 (利用 Scrapy 爬取不同新闻网站的新闻,整合到一个平台)。



学习资源:

Python 静态爬虫入门课程 >>>

Python Scrapy 文档 >>>

Python Scrapy 入门课程 >>>

Python Scrapy 爬虫入门到实战 >>>

Python 爬虫示例(实战) >>>

Python 爬虫(实战) >>>

Python 模拟登录(实战) >>>

爬虫教程 >>>


2. 爬虫合法性: (必须学习,避免法律风险)

  • 知识产权:避免侵犯网站知识产权(数据、文字、图片、音视频等)。
  • 网络安全法:遵守中国网络安全法律法规,禁止网络攻击、破解、窃取、篡改等违法活动。
  • 隐私保护:不擅自收集、存储、传播他人个人隐私信息(身份证号、手机号等)。
  • 网站规则:遵守各网站的爬虫规则,尊重 robots.txt 文件。
  • 合同和协议:遵守网站提供的 API 或其他爬取协议。
  • 公序良俗:不传播违法、淫秽、暴力等有害信息。

二、数据抓取

1. 常用网络协议 (HTTP/HTTPS):

  • HTTP: 用于 Web 数据传输的协议,定义客户端和服务器通信规则。
  • HTTPS: HTTP 的安全版本,使用 SSL/TLS 加密数据传输。

2. HTTP 请求:

  • 学习资源>>> 
  • 请求头: 包含请求元数据 (请求方法、目标 URL、用户代理、请求时间等)。
  • 请求参数: 传递给服务器的数据 (GET 请求在 URL 中,POST 请求在请求体中)。
  • 请求类型: GET、POST、PUT、DELETE 等。

3. HTTP 响应:

  • 响应头: 包含响应元数据 (响应状态码、响应时间、服务器信息等)。
  • 响应参数: 服务器返回的数据 (网页内容、JSON 数据、图片等)。

4. Requests 模块: (流行的第三方库,易于使用)

  • 描述: 提供易于使用的 API 发送 HTTP 请求和处理响应 (GET、POST 等)。

学习资源:

Requests 中文文档 >>>

Python Requests 权威指南 >>>


5. urllib 模块: (Python 标准库,功能相对简单)

  • 描述: 提供基本的 HTTP 请求功能,无需额外安装。
  • 学习资源 >>>

三、模拟登录

  • 使用 Requests 库: 发送登录请求,提交用户名和密码,处理 Cookie 保持登录状态。
  • 使用 Selenium 库: 自动化浏览器操作,模拟用户交互完成登录 (适用于 JavaScript 生成的表单)。

四、网站抓取

1. 静态网站抓取:

  • 使用 Requests 库: 发送 GET 请求,获取 HTML 响应,使用解析库 (如 BeautifulSoup) 提取数据。
  • 使用 Scrapy 框架: 适用于爬取多个页面或网站,提供高级功能 (自动化页面遍历、数据存储、异步请求)。

2. 动态网站抓取:

  • 使用 Selenium 库: 自动化浏览器,等待页面加载完成,提取数据。
  • 使用无头浏览器: (如 Puppeteer, Playwright) 渲染 JavaScript 并提取内容。

五、无头浏览器

1. Selenium: 自动化测试工具,模拟用户在 Web 应用中的操作,支持多种编程语言和浏览器。

2. Puppeteer: Node.js 库,控制 Chrome 或 Chromium 浏览器进行自动化操作 (Web 抓取、测试、生成 PDF 等)。

六、数据解析

1. 常用标签 (HTML/XML): 基本的数据解析方法,通过标签名称、属性、层级结构定位和提取数据。

2. BeautifulSoup: Python 库,解析 HTML 和 XML,提供易于使用的 API 遍历文档树和提取数据。

3. 正则表达式: 强大的文本模式匹配工具,适用于简单的数据提取任务。

4. XPath: 在 XML 文档中定位和提取数据的语言,Python 中可使用 lxml 库处理。

七、数据导出

1. 文件:

  • Excel: 使用 openpyxl 或 pandas 库导出到 Excel 文件。
  • CSV: 使用 Python 内置库 csv 保存为 CSV 格式。

2. 数据库:

  • MongoDB: NoSQL 数据库,使用 pymongo 库存储数据。
  • MySQL: 关系型数据库,使用 mysql-connector 或其他 MySQL 连接库。

八、中间件

  • Redis: 内存数据库,用于缓存和快速存储临时数据,使用 redis-py 库。

九、Scrapy 框架

1. 核心概念:

  • 命令行工具: 创建、运行、调试和管理爬虫项目 (scrapy startproject, scrapy crawl, scrapy shell 等)。
  • Spiders (爬虫): 定义如何抓取网站的结构和行为 (继承 scrapy.Spider 类)。
  • Selectors (选择器): 从 HTML 或 XML 文档中提取数据 (XPath 和 CSS 选择器)。
  • Items (数据项): 结构化和存储从网页提取的数据 (用户自定义的 Python 字典或类)。
  • Item Loaders (数据加载器): 填充 Items,处理数据清洗、转换和预处理。
  • Pipelines (管道): 处理爬取的数据 (存储、清洗、验证、导出等)。
  • Scrapy Shell: 交互式工具,测试和调试 Scrapy 爬虫。
  • Link Extractors (链接提取器): 从页面中提取链接 (例如 LinkExtractor)。

2. 调度器: 管理爬虫的任务队列,控制爬取流程和顺序。

3. 分布式爬虫: 将爬虫任务分散到多个节点或机器上,提高效率、速度和容错性。

4. 部署: 将爬虫系统部署到生产环境中运行。

十、并发异步爬虫

  • aiohttp: 基于 asyncio 的异步 HTTP 请求库,构建高性能、可伸缩的 Web 服务和应用。
  • asyncio: Python 标准库,提供对异步编程的支持 (异步 I/O、协程和任务)。

十一、高级爬虫技术

  • IP 代理: 隐藏真实 IP 地址,绕过访问限制,提高爬取速度和匿名性。
  • 验证码识别: 使用图像处理、机器学习或深度学习技术 (如 CNN) 自动识别和破解验证码。
  • APP 抓取: 模拟移动应用的请求和交互获取数据 (使用 Charles、Fiddler 等抓包工具)。
  • 增量式爬虫: 只爬取自上次爬取以来有更新的数据,提高效率。

十二、反爬虫技术

  • 请求头限制: 限制或检查 HTTP 请求的头部信息 (User-Agent, Referer 等)。
  • 验证码: 识别用户是否为人类的机制。
  • 黑白名单: 控制访问,阻止或允许特定用户或 IP 地址访问网站。
  • 封禁 IP: 根据恶意行为封禁特定 IP 地址。
  • 数据加密: 将数据转换为不可读的形式。
  • 数据混淆: 改变数据的格式或结构,使其难以理解或解析。
  • 行为分析: 监控和分析用户或爬虫的行为,检测异常活动。


0 人点赞