Chenerdy的幻想乡
首页文章归档风说书笔记说说友链项目相册关于
← 全部科目

Python爬虫

课次目录

00开篇01爬虫简介02Requests请求03正则04数据解析05selenium自动化06DrissionPage自动化
笔记/Python爬虫/第 01 课

Python爬虫笔记(01):爬虫简介

2026-09-13 19:00:00

01-爬虫简介

1.什么是爬虫

网络爬虫(Web Crawler),也叫网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本

--访问互联网并提取数据的自动化程序

比如遇到这样的需求, 希望能够保存互联网上的一些重要的数据信息为己所用

爬虫就是通过编写程序来爬取互联网上的优秀资源(图片,音频,视频,数据)等等

1.1通用网络爬虫

常用于搜索引擎: 功能强大,采集面广, 百度 360 谷歌等等

比如百度搜索引擎的爬虫叫作百度蜘蛛(Baiduspider)。百度蜘蛛每天会在海量的互联网抓取各种类型的网页,然后对这些网页进行分析和索引, 爬取优质信息并收录,当用户在百度搜索引擎上检索对应关键词时,百度将对关键词进行分析处理,从收录的网页中找出相关网页,按照一定的排名规则进行排序并将结果展现给用户

1.2聚焦网络爬虫

常用于爬虫岗位(主要应用): 明确要爬取的主题领域,如“财经新闻”、“二手车价格”、“招聘信息”、“房产楼盘”等。

聚焦爬虫则是有针对性地抓取特定主题或领域的网页。例如,一个专注于新闻领域的聚焦爬虫,只会抓取与新闻相关的网页,而不会去抓取其他不相关的网页,如购物网站、游戏网站等

1.3增量式网络爬虫

聚焦爬虫的迭代(进阶): 区分新老数据 (采集更新后的内容), 设置多久时间之后重新采集一次

  • 聚焦爬虫解决了“爬什么”(目标范围)的问题。
  • 增量式爬虫解决了“何时爬、如何高效爬”(更新策略)的问题

只抓取新出现的或发生变化的网页内容。它会记录每次抓取的时间和网页的状态,下次抓取时只获取更新的网页内容,这样可以节省大量的时间和资源,提高爬虫的效率, 比如(爬取更新后的内容:漫画, 视频等)

1.4 robots协议

Robots 协议(也称为爬虫协议、机器人协议等),其英文全称为 “Robots Exclusion Protocol”,是一种国际通行的道德规范,用于告知网络爬虫哪些页面可以抓取,哪些页面不能抓取,以此来保护网站的隐私和安全,规范网络爬虫的行为

局限性:需要注意的是,Robots 协议只是一种道德规范,而不是法律强制规定。也就是说,虽然大多数正规的网络爬虫会遵守这一协议,但仍有一些恶意爬虫可能会无视 Robots 协议,强行抓取被禁止访问的内容。

君子协定:指代的是口头上的协议,如果爬取了,可能会出现法律纠纷(商用)

小米: https://www.mi.com/robots.txt

百度: https://www.baidu.com/robots.txt

img

  • User-agent

    :用来指定适用的网络爬虫名称。“User-agent: *” 表示该规则适用于所有网络爬虫;也可以指定特定的爬虫名称,

    • 如 “User-agent: Baiduspider”,则仅对百度搜索引擎的爬虫生效。
    • User-agent: Googlebot:仅匹配谷歌的爬虫。
  • Disallow

    :用于指定不允许爬虫访问的页面或目录。例如,“Disallow: /admin/” 表示禁止所有爬虫访问网站的 /admin/ 目录及其下的所有页面;

    • “Disallow: /page.html” 则表示禁止访问特定的 page.html 页面
  • Allow

    :与 Disallow 相反,用于指定允许爬虫访问的页面或目录(在部分情况下使用)。

    • 如 “Allow: /public/” 表示允许爬虫访问网站的 /public/ 目录。

1.5法律和道德问题

例如: 不能抓取受版权保护的内容,不能违反网站的使用条款,不能过度抓取导致网站服务器负担过重等。许多网站会通过设置 robots.txt 文件来告知爬虫哪些页面可以抓取,哪些页面不可以抓取,爬虫应该遵守这些规定

IP代理池

尽量不要快速的进行请求获取数据,会进行封口你的IP地址(你当前网络地址), 当然能通过IP代理池进行调换,

但是尽量不要请求速度过快:

  • 尊重网站服务器 - 避免对目标服务器造成过大压力
  • 避免被封禁 - 代理IP池也可能被整体封禁
  • 稍微的延迟请求数据, 保证你的数据获取成功

道德和法律

  • 不要对于别人的服务器一直进行攻击
  • 不要做违法和犯罪的事情, 要对法律有敬畏之心

2.爬虫的基础流程

2.1能抓取的数据

  • HTML文档、Json格式文本等
  • 图片
  • 视频,音频
  • 其他(只要能请求到的 就意味着都能获取到, 能看到的都可以请求到)
    • vip的内容(需要对应的vip的账号) -- 否则会验证不通过(是违法行为)

2.2基础流程

  1. 发起请求

    • Network(浏览器请求数据展示位置)
      • 勾选上Preserve Log 时: 涮新页面后,之前已经存在的请求不会被清空
        • 用于查找登录接口(比如登录时会跳转页面:刷新页面)
      • 勾选上Disable cache时: 涮新页面后, 所有内容都会重置请求
        • 勾选上表示禁止请求进行缓存
    • 通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应
    • 设置额外的headers进行伪装请求, (比如: 进高中或某个公司大型会议)
      • 公司会议: 比如伪装对应工牌进入会场
      • 高中校园: 校园卡,校服
  2. 获取响应内容

    • 如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,JSON字符串,二进制数据(如图片视频)等类型

      • preview是开发者工具(如 Chrome DevTools)提供的功能,用于可视化解析响应数据,而不是直接显示原始文本

        • 适用于 JSON、HTML、图片、PDF 等格式的响应
        • 如果返回的是 JSON,preview 会以 树状结构 展示,方便查看嵌套数据。
        • 如果返回的是 HTML,preview 会渲染成网页结构(但不会执行 JS)。
      • Response 获取响应的数据

  3. 解析内容

    • 得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是JSON,可以直接转为JSON对象解析,可能是二进制数据,可以做保存或者进一步的处理
      • JSON数据解析
      • 正则表达式
      • BeautifulSoup
      • PyQuery
      • XPath
  4. 保存数据

    • 保存形式多样,可以保存为文本,也可以保存至数据库,或者保存特定格式的文件。
      • 文本: 纯文本、Json、Xml等
      • 数据库: 如MySQL、Oracle、SQL Server等具有结构化表结构形式存储等等
      • 二进制文件: 如图片、视频、音频等等直接保存成特定格式即可。

Request和Response

Request: 浏览器发起请求携带数据消息到网址所在的服务器,这个过程叫做HTTP Request

Response: 服务器返回携带数据给浏览器。这个过程叫做HTTP Response。

Request

  • 请求方式: 主要有GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等
  • 请求URL: URL全称统一资源定位符,如一个网页文档、一张图片、一个视频等都可以用URL唯一来确定
  • 请求头: 包含请求时的头部信息,如User-Agent、Host、Cookies等信息
  • 请求体: 请求时额外携带的数据如表单提交时的表单数据
    • Payload 请求数据携带体(演示地址: 腾讯新闻网页)
      • 当使用 POST、GET等方法发送数据时,payload 就是请求体(body或params)中的数据。
      • 常见的数据格式:
        • Request Payload: post携带的数据
        • Query String Parameters: get携带的数据

Response

  • 响应状态: 有多种响应状态,如200代表成功、301跳转、404找不到页面、502服务器错误
  • 响应头: 如内容类型、内容长度、服务器信息、设置Cookie等等
  • 响应体: 最主要的部分,包含了请求资源的内容,如网页HTML、图片二进制数据等。

https://spidertools.cn/

Jupyter notebook工具

pip install notebook -i https://pypi.mirrors.ustc.edu.cn/simple/

← Python爬虫笔记(00):开篇Python爬虫笔记(02):Requests请求 →

留言

目录