news 2026/8/5 15:56:55

Python爬虫入门:零基础2小时掌握requests与BeautifulSoup实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python爬虫入门:零基础2小时掌握requests与BeautifulSoup实战

不要任何基础,2小时速通Python爬虫!专为0基础小白打造的Python爬虫教程

你是不是经常看到别人用Python爬虫轻松获取数据,自己却觉得门槛太高?或者尝试过几次,总是在环境配置、代码报错、反爬虫机制面前败下阵来?今天这篇文章,我要告诉你一个事实:Python爬虫的核心逻辑,远比大多数人想象的要简单。你不需要精通计算机网络,也不需要理解复杂的异步编程,更不需要被那些“从入门到放弃”的教程吓退。

这篇文章的目标很明确:让一个完全零基础的小白,在2小时内,真正理解爬虫是什么、能做什么,并且亲手运行第一个能工作的爬虫脚本。我不会讲那些华而不实的理论,也不会堆砌一堆你暂时用不上的高级库。我们将从一个最核心、最经典的“请求-解析-存储”流程出发,用最少的代码,解决最实际的问题——从网页上抓取你需要的信息。

读完这篇文章,你将彻底搞懂:

  1. 爬虫的本质是什么?它和你手动复制粘贴有什么区别?
  2. 零基础需要准备什么?如何用最简单的方式搭建Python环境。
  3. 爬虫的核心三步走:如何发送请求、如何解析网页、如何保存数据。
  4. 第一个实战项目:爬取一个公开的、无反爬的网站(比如豆瓣电影Top250),并保存到Excel。
  5. 你会遇到哪些“坑”?以及如何用最基础的方法绕过它们。

我们开始吧。

1. 这篇文章真正要解决的问题:为什么你学不会爬虫?

很多新手学爬虫失败,不是因为笨,而是因为教程的起点错了。他们一上来就让你学urllibasyncioScrapy框架,讲HTTP状态码、User-AgentCookie池。这些知识重要吗?重要。但对零基础的你来说,它们就像还没学会走路,就被要求理解空气动力学去跑步。

爬虫最核心的思维,其实是“模拟浏览器访问 + 提取规律信息”。你平时怎么在浏览器里看网页?输入网址 -> 浏览器请求 -> 服务器返回HTML -> 浏览器渲染成你看到的图文。爬虫就是把这个过程自动化:用代码代替你输入网址,用代码接收服务器返回的HTML,再用代码从这一大堆“源代码”里,把你想要的那部分文字、链接、图片地址“抠”出来。

所以,零基础学爬虫,第一步不是学复杂的库,而是建立这个“模拟-提取”的思维模型。一旦这个模型建立起来,后面所有的技术细节,都是为了解决这个模型在实际运行中遇到的具体问题,比如“网站不让我模拟了怎么办?”(反爬虫)、“网页加载太慢了怎么办?”(异步)、“数据太多了怎么办?”(框架和分布式)。

本文将严格遵循这个思路,先带你用最基础的库(requestsBeautifulSoup)跑通整个核心流程,建立信心。在这个过程中,你会自然遇到一些初级“坑”,我们再一一解决。这样学,路径最短,成就感最强。

2. 基础概念与核心原理

在动手之前,我们用3分钟把几个最关键的概念说清楚。放心,没有任何难懂的术语。

2.1 什么是爬虫?

爬虫(Web Crawler/Spider),就是一段自动访问互联网网页并抓取数据的程序。你可以把它想象成一个不知疲倦的、速度极快的“复制粘贴机器人”。

  • 手动操作:你打开浏览器 -> 访问豆瓣电影Top250页面 -> 用眼睛找到电影名 -> 打开Excel -> 手动输入。
  • 爬虫操作:你写一段代码 -> 代码自动访问豆瓣电影Top250页面 -> 自动从网页代码里找到所有电影名的位置 -> 自动把所有名字保存到一个文件里。

2.2 爬虫的基本工作流程(核心三步走)

这是本文的基石,务必理解:

  1. 发送请求(Request):你的程序向目标网站的服务器说:“喂,把某某网页的内容发给我”。这就像你在浏览器地址栏输入网址后敲回车。
  2. 获取响应(Response):网站服务器收到请求后,会把网页的“源代码”(主要是HTML格式)打包好,发回给你的程序。这就像浏览器收到了网页数据。
  3. 解析与存储(Parse & Save):你的程序拿到这堆“源代码”(它是一堆包含各种标签的文本,对人来说很乱,但对程序来说有规律可循),然后从中提取出你需要的信息(如电影名、评分、链接),最后把这些信息保存到文件(如TXT、CSV、Excel)或数据库里。

整个过程的核心是找到规律。你要告诉程序:电影名在源代码里,是被<span class="title"></span>这样的标签包起来的。程序的工作就是找到所有这样的标签,并把里面的文字拿出来。

2.3 我们将要使用的“武器”

为了让第一步尽可能简单,我们选择Python社区最流行、最易用的两个库:

  • requests专门用于“发送请求”和“获取响应”。它用起来比Python自带的urllib简单十倍,一句话就能搞定网页下载。
  • BeautifulSoup(简称bs4):专门用于“解析”HTML/XML文档。它提供了一套非常直观的方法,让你能像点名一样,通过标签名、属性值来找到你想要的数据。

它们的组合,是Python爬虫入门公认的“黄金搭档”。

3. 环境准备与前置条件

“工欲善其事,必先利其器”。搭建环境是很多新手的第一个拦路虎,我们用一个最稳妥、最通用的方案。

3.1 安装Python

如果你还没有安装Python,请按以下步骤操作:

  1. 访问官网:打开浏览器,访问 python.org 。
  2. 下载安装包:点击 “Downloads”,选择你的操作系统(Windows/macOS/Linux)。对于Windows用户,务必记得在安装时勾选 “Add Python to PATH” 这个选项!这是避免后续在命令行中找不到python命令的关键。
  3. 验证安装:安装完成后,打开“命令提示符”(Windows)或“终端”(macOS/Linux)。输入以下命令并按回车:
    python --version
    如果显示类似Python 3.8.10的版本信息,说明安装成功。如果提示“不是内部或外部命令”,请重新安装并确认勾选了“Add Python to PATH”。

3.2 安装必要的库

我们将使用pip(Python的包管理工具)来安装requestsbeautifulsoup4。同样在命令行中,依次输入以下两条命令并执行:

pip install requests pip install beautifulsoup4

注意:如果速度慢或失败,可以使用国内镜像源加速,例如:

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装成功后,环境就准备好了。你可以关闭命令行窗口了。

3.3 选择你的代码编辑器

写代码需要一个文本编辑器。你可以使用任何你喜欢的,比如:

  • VSCode:免费、强大、插件丰富,推荐新手使用。
  • PyCharm Community:专门为Python设计的IDE,功能齐全。
  • 记事本/文本编辑:也可以,但不方便调试。

本文的代码示例将保持最大的兼容性,你可以在任何编辑器中编写并运行。

4. 核心流程拆解:从零编写第一个爬虫

现在,我们正式进入实战环节。我们将爬取一个非常适合练手的公开网站:豆瓣电影Top250。这个网站结构清晰,没有复杂的反爬机制,是学习爬虫的经典目标。

我们的目标是:爬取第一页的25部电影的名称、评分和详情页链接。

4.1 第一步:观察目标与分析网页结构(关键!)

在写代码之前,我们必须先“人肉”观察一下网页。这是爬虫成功与否的决定性步骤。

  1. 用浏览器打开 豆瓣电影Top250 。
  2. 在页面上右键 -> 检查(或按F12),打开“开发者工具”。
  3. 点击开发者工具左上角的箭头图标(或按Ctrl+Shift+C),然后将鼠标移动到网页中的任意一个电影条目(比如“肖申克的救赎”)上并点击。
  4. 此时,开发者工具会自动定位到显示这部电影信息的HTML代码区域。

你会发现规律:每一个电影条目都包裹在一个<div class="item">的标签里。在这个div内部:

  • 电影名位于<span class="title">标签内。
  • 评分位于<span class="rating_num">标签内。
  • 详情页链接位于<a href="...">标签的href属性中。

我们的任务就是写代码,让程序自动找到所有class="item"div,然后在每个div里,分别提取出上述信息。

4.2 第二步:发送请求,获取网页源代码

打开你的代码编辑器,新建一个文件,命名为douban_spider.py

首先,我们要导入刚才安装的库,然后用requests去获取网页内容。

# douban_spider.py import requests from bs4 import BeautifulSoup # 1. 定义目标URL(豆瓣电影Top250第一页) url = 'https://movie.douban.com/top250' # 2. 定义一个请求头,这是为了让自己看起来更像一个“浏览器”,避免被最简单的反爬机制拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } # 3. 发送GET请求,获取服务器响应 response = requests.get(url, headers=headers) # 4. 检查请求是否成功(状态码200表示成功) if response.status_code == 200: # 将响应的内容(网页HTML源代码)以文本形式保存到变量 `html_content` 中 html_content = response.text print("网页请求成功!") # 可以先打印前500个字符看看内容 # print(html_content[:500]) else: print(f"请求失败,状态码:{response.status_code}")

代码解释:

  • import ...: 引入我们需要的工具。
  • headers: 这是模拟浏览器的关键。服务器会通过User-Agent来判断访问者是谁。使用一个常见的浏览器UA,能让我们的请求更“合法”。
  • requests.get(): 这是requests库最核心的函数,用于发起一个GET请求。
  • response.status_code: 响应状态码。200成功,404页面不存在,500服务器错误等。
  • response.text: 服务器返回的HTML源代码,正是我们需要解析的内容。

运行一下这段代码(在文件所在目录打开命令行,输入python douban_spider.py),如果看到“网页请求成功!”,恭喜你,最基础的一步已经完成了!

4.3 第三步:解析HTML,提取目标数据

现在,我们手里有了一团乱麻似的HTML文本 (html_content)。接下来要用BeautifulSoup把这团乱麻理顺,并抽出我们想要的丝线(数据)。

在上一步的代码后面继续添加:

# 5. 使用BeautifulSoup解析HTML内容,指定解析器为‘html.parser’ soup = BeautifulSoup(html_content, 'html.parser') # 6. 查找所有 class="item" 的 div 标签,每一个对应一部电影 movie_items = soup.find_all('div', class_='item') # 7. 遍历每一个电影条目,提取具体信息 for item in movie_items: # 提取电影名称(注意:中文名在第一个 span.title 里,可能还有英文名在第二个) title_tag = item.find('span', class_='title') # 使用 .string 属性获取标签内的文本,如果找不到标签则返回空字符串 title = title_tag.string if title_tag else '未找到名称' # 提取评分 rating_tag = item.find('span', class_='rating_num') rating = rating_tag.string if rating_tag else '未找到评分' # 提取详情页链接 # 先找到包含链接的 <a> 标签,它通常在 class="hd" 的 div 里 link_tag = item.find('div', class_='hd').find('a') if item.find('div', class_='hd') else None link = link_tag['href'] if link_tag else '未找到链接' # 打印提取到的信息 print(f"电影:{title} | 评分:{rating} | 链接:{link}")

代码解释:

  • BeautifulSoup(html_content, 'html.parser'): 创建一个BeautifulSoup对象,它装载了HTML内容,并提供了各种查找方法。
  • soup.find_all('div', class_='item'):这是核心!find_all方法会找到HTML中所有符合条件的标签。这里我们找到所有class属性为itemdiv标签,返回一个列表。
  • item.find('span', class_='title'): 在单个电影条目 (item) 中,使用find方法查找第一个符合条件的标签(classtitlespan)。
  • .string: 获取标签内的文本内容。
  • if ... else ...: 这是一个简单的容错处理。如果找不到某个标签(比如网页结构有微小变动),程序不会崩溃,而是赋予一个默认值。
  • link_tag['href']: 获取标签的属性值。这里获取<a>标签的href属性,即链接地址。

再次运行程序。你应该能在控制台看到25行输出,每一行都是一部电影的名称、评分和链接。这一刻,你的第一个爬虫已经成功了!

4.4 第四步:保存数据到文件

把数据打印在屏幕上只是第一步,我们通常需要保存下来。这里我们选择保存到CSV文件(一种可以用Excel打开的表格格式)。

在打印信息的循环结束后,添加数据保存的代码。我们需要先收集所有数据,再一次性写入文件。

修改你的代码,整体结构如下:

import requests from bs4 import BeautifulSoup import csv # 导入csv模块用于写文件 url = 'https://movie.douban.com/top250' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } response = requests.get(url, headers=headers) if response.status_code == 200: html_content = response.text soup = BeautifulSoup(html_content, 'html.parser') movie_items = soup.find_all('div', class_='item') # 创建一个列表来存储所有电影数据,每个电影是一个字典 movies_data = [] for item in movie_items: title_tag = item.find('span', class_='title') title = title_tag.string if title_tag else 'N/A' rating_tag = item.find('span', class_='rating_num') rating = rating_tag.string if rating_tag else 'N/A' link_tag = item.find('div', class_='hd').find('a') if item.find('div', class_='hd') else None link = link_tag['href'] if link_tag else 'N/A' # 将每部电影的信息存入字典,并添加到列表中 movies_data.append({ 'title': title, 'rating': rating, 'link': link }) # 仍然在控制台打印,方便查看进度 print(f"已抓取:{title}") # 将数据写入CSV文件 csv_filename = 'douban_top250_page1.csv' # 定义CSV文件的列名 fieldnames = ['title', 'rating', 'link'] with open(csv_filename, 'w', newline='', encoding='utf-8-sig') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() # 写入表头 writer.writerows(movies_data) # 写入所有数据行 print(f"\n数据已成功保存到文件:{csv_filename}") else: print(f"请求失败,状态码:{response.status_code}")

代码解释:

  • import csv: 导入Python内置的CSV模块。
  • movies_data = []: 创建一个空列表,用于在循环中积累每一部电影的数据(字典格式)。
  • movies_data.append({...}): 将每部电影的信息作为一个字典,添加到列表中。
  • with open(...) as csvfile:: 使用with语句打开(或创建)一个文件,这样可以确保文件在使用后被正确关闭。
  • encoding='utf-8-sig': 指定文件编码为UTF-8 with BOM,这是为了在Excel中打开时能正确显示中文。
  • csv.DictWriter: 创建一个字典写入器,它可以根据我们提供的fieldnames(列名)将字典数据写入CSV文件。
  • writer.writeheader()writer.writerows(): 分别写入表头和所有数据行。

运行这段完整的代码。程序执行完毕后,你会在douban_spider.py同一个文件夹下,发现一个新生成的douban_top250_page1.csv文件。用Excel或文本编辑器打开它,你会看到一个整洁的表格,包含了25部电影的信息。

5. 运行结果与效果验证

运行上面的完整代码,你应该在控制台看到类似以下的输出:

网页请求成功! 已抓取:肖申克的救赎 已抓取:霸王别姬 已抓取:阿甘正传 ... 已抓取:窃听风暴 数据已成功保存到文件:douban_top250_page1.csv

如何验证成功?

  1. 控制台输出:程序没有报错(如ConnectionError,KeyError等),并且按顺序打印出了25个电影名。
  2. 文件生成:在脚本所在目录,生成了douban_top250_page1.csv文件。
  3. 文件内容:用Excel或记事本打开该CSV文件,确认有三列(title, rating, link),并且有25行数据(加上表头是26行),中文显示正常。

如果以上三点都符合,那么恭喜你,你的第一个Python爬虫项目已经圆满成功!你已经完整地走过了“发送请求 -> 解析数据 -> 保存数据”的全流程。

6. 常见问题与排查思路

作为新手,你几乎一定会遇到下面这些问题。别担心,它们都有明确的解决路径。

问题现象可能原因排查方式解决方案
运行脚本后没有任何输出,或立即闪退1. 代码有语法错误。
2. 没有在命令行中正确进入脚本所在目录。
1. 在命令行中运行python douban_spider.py,仔细看错误信息(通常是SyntaxError)。
2. 使用cd命令切换到脚本所在文件夹再运行。
1. 根据错误信息修改代码,常见错误:缩进不对、冒号缺失、括号不匹配。
2. 在文件资源管理器地址栏输入cmd回车,可直接在当前目录打开命令行。
报错ModuleNotFoundError: No module named ‘requests’requests库没有安装成功,或安装在了其他Python环境。在命令行中运行pip list,查看已安装的包列表中是否有requestsbeautifulsoup4重新执行pip install requests beautifulsoup4。如果电脑有多个Python,确认你正在使用的pythonpip是同一个版本的(可用python -m pip install来安装)。
请求失败,状态码为 403目标网站识别出这是爬虫请求,拒绝了访问。这是最常见的反爬虫手段。检查代码中的headers是否设置,特别是User-Agent是否是一个有效的浏览器标识。1.确保headers字典已正确添加在requests.get()调用中。
2. 可以尝试更新User-Agent字符串,在网上搜索“最新User-Agent”替换。
请求失败,状态码为 404输入的URL地址错误。核对代码中的url变量,是否和浏览器地址栏的网址完全一致。复制浏览器中目标网页的完整地址,替换代码中的url
能打印“请求成功”,但movie_items是空的,抓不到数据1. 网页结构已经发生变化,class=’item’div不存在了。
2. 网站需要登录或JavaScript渲染,直接请求拿到的HTML里没有数据。
1. 再次使用浏览器的“检查”功能,确认电影条目外层的标签和类名是否还是div class=”item”
2. 将html_content保存到一个.html文件,用浏览器打开,看是否包含可见的电影信息。
1. 根据新的网页结构,修改soup.find_all()里的查找条件。
2. 对于需要JS渲染的网站,入门阶段建议换一个静态网站练习(如其他榜单、新闻网站)。进阶需要使用SeleniumPlaywright等工具。
保存的CSV文件用Excel打开中文是乱码Excel对UTF-8无BOM编码支持不友好。用记事本打开CSV文件,如果中文正常,则是Excel的问题。在代码中open()函数里,将encoding=’utf-8’改为encoding=’utf-8-sig’
只能抓到第一页25条数据我们的代码只请求了第一页的URL。观察豆瓣Top250的翻页规律,第二页URL是?start=25&filter=,第三页是?start=50&filter=可以使用一个循环,批量生成不同页码的URL,然后重复执行抓取和解析流程。

7. 最佳实践与工程建议

当你成功运行第一个爬虫后,如果想走得更远更稳,下面这些建议至关重要。

7.1 遵守Robots协议与法律法规

这是红线,绝对不能碰。

  • Robots协议:在网站根目录下通常有一个robots.txt文件(如https://douban.com/robots.txt)。这个文件规定了哪些页面允许爬取,哪些禁止。虽然技术上可以绕过,但遵守它是基本的网络礼仪和合法性的基础。
  • 法律法规:切勿爬取涉及个人隐私、商业秘密、受版权保护或国家法律明令禁止的数据。爬取的数据仅用于个人学习、研究或公益目的,不得用于商业牟利或损害他人利益。
  • 控制访问频率:疯狂、高频率地请求一个网站,会对对方服务器造成压力(即“DDOS攻击”),这不仅是非法的,也极易导致你的IP被永久封禁。

7.2 让你的爬虫更“友好”

  1. 设置请求头(Headers):我们已经做了。除了User-Agent,有时还需要Referer(来源页)、Cookie(登录状态)等。
  2. 添加延迟(Delay):在循环请求多个页面时,在每次请求之间使用time.sleep()函数暂停几秒。这能极大降低对目标网站的压力。
    import time time.sleep(2) # 暂停2秒
  3. 处理异常:网络是不稳定的,请求可能超时或失败。使用try...except语句包裹你的请求代码,确保程序在遇到单个页面失败时不会崩溃,并能记录错误继续运行。
    try: response = requests.get(url, headers=headers, timeout=5) response.raise_for_status() # 如果状态码不是200,抛出异常 except requests.exceptions.RequestException as e: print(f"请求 {url} 时出错:{e}") continue # 跳过当前页面,继续下一个

7.3 代码组织与扩展

  • 函数化:将发送请求、解析页面、保存数据分别写成函数,使代码更清晰、更易复用。
  • 分页爬取:分析URL规律,用for循环构造所有页面的URL列表,然后遍历爬取。
  • 存储多样化:除了CSV,可以尝试保存到JSON文件(json模块)、SQLite数据库(sqlite3模块)或MySQL等。
  • 使用Session:如果需要保持登录状态或Cookie,使用requests.Session()对象,它会在多次请求间自动维持会话。

7.4 下一步学什么?

当你熟练掌握了requests+BeautifulSoup这套组合拳后,可以根据兴趣和需求深入学习:

  • 动态网页爬取:学习SeleniumPlaywright,它们可以控制真实浏览器,解决JavaScript渲染问题。
  • 大规模爬虫框架:学习Scrapy,它是一个专业的爬虫框架,提供了项目结构、异步处理、中间件、管道等强大功能,适合复杂、大型的爬取任务。
  • 反爬虫与反反爬:研究IP代理池、验证码识别、请求签名等更高级的对抗技术(务必在合法合规的前提下进行)。
  • 数据清洗与分析:爬下来的数据往往是“脏”的,学习使用pandas库进行数据清洗、分析和可视化。

8. 总结与后续学习方向

通过这个不到100行的脚本,你已经掌握了Python爬虫最核心的骨架。我们来回顾一下你究竟学会了什么:

  1. 建立了核心思维模型:爬虫 = 模拟浏览器请求 + 从HTML中按规律提取数据 + 保存。你不再觉得它神秘。
  2. 掌握了最小可行技术栈:会用requests库获取网页,会用BeautifulSoup库解析HTML标签,会用csv模块保存数据。这三者足以应对大量静态网站。
  3. 完成了完整工作流:从环境搭建、观察网页、编写代码、发送请求、解析数据到保存文件,你独立走通了一个真实项目的全流程。
  4. 具备了基础排错能力:你知道了状态码403、404意味着什么,知道了乱码如何解决,知道了数据抓不到该如何排查。

这“2小时”的投入,带给你的不是一堆孤立的知识点,而是一个可以立即上手、并能够自我扩展的实用技能。你可以尝试用同样的思路去爬取其他结构类似的网站,比如豆瓣读书榜单、知乎热榜、天气预报网站等。

记住,爬虫技术是工具,关键在于你用他来做什么。始终保持对数据的敬畏,对规则的遵守,将技术用于提升效率、辅助学习,这才是长久之道。建议你将这个项目的代码保存好,作为你爬虫学习的起点。下次当你需要从网上批量获取信息时,你知道该从哪里开始了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 15:51:41

3DSMax插件开发:脚本与程序的性能对比与选型指南

1. 3DSMax插件生态的双轨制&#xff1a;脚本与程序的本质差异 在3DSMax这个三维建模与动画制作的重量级软件中&#xff0c;插件生态呈现出明显的双轨并行特征。从业十余年&#xff0c;我深刻体会到MAXScript脚本与Python/C插件这两种技术路线给工作流带来的根本性差异。 MAXSc…

作者头像 李华
网站建设 2026/8/5 15:51:29

C/C++结构体内存的问题

1.结构体内存布局的基本规则1.1.成员顺序结构体的成员在内存中按照声明的顺序依次存放。第一个成员的地址与结构体的地址相同。struct Example {char a; // 1字节int b; // 4字节 double c; // 8字节short d; // 2字节 };1.2 对齐要求和结构体大小的计算结构…

作者头像 李华
网站建设 2026/8/5 15:49:59

DDS技术解析:从数字合成原理到工程实践应用

1. 从模拟到数字的桥梁&#xff1a;DDS究竟是什么&#xff1f; 如果你在信号发生器、通信系统或者音频设备里翻找过技术手册&#xff0c;大概率会碰到一个缩写&#xff1a;DDS。全称是Direct Digital Synthesis&#xff0c;直接数字合成。这个名字听起来有点学术&#xff0c;但…

作者头像 李华
网站建设 2026/8/5 15:49:06

5分钟终极指南:用GModPatchTool彻底修复Garry‘s Mod启动问题

5分钟终极指南&#xff1a;用GModPatchTool彻底修复Garrys Mod启动问题 【免费下载链接】GModPatchTool &#x1f1ec;&#x1fa79;&#x1f6e0; Patches for Garrys Mod. Updates/Improves CEF and Fixes common launch/performance issues (esp. on Linux/Proton/macOS). F…

作者头像 李华
网站建设 2026/8/5 15:47:05

一文讲透AI Agent:从底层原理到生产落地完整梳理

文章目录1 先唠点实在的&#xff1a;你天天用的Agent&#xff0c;到底是个啥1.1 一句话戳透本质1.2 一个万能公式记牢2 Agent干活的真面目&#xff1a;一边想一边干&#xff0c;循环往复2.1 啥是ReAct循环2.2 轨迹&#xff1a;Agent的打工流水账2.3 上下文累积才是精髓2.4 拆一…

作者头像 李华