<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web-Scraping on TouchingFish.top</title><link>https://touchingfish.top/tags/web-scraping/</link><description>Recent content in Web-Scraping on TouchingFish.top</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 23 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://touchingfish.top/tags/web-scraping/index.xml" rel="self" type="application/rss+xml"/><item><title>和节肢动物友好相处</title><link>https://touchingfish.top/2026/crawler-learns-to-think/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2026/crawler-learns-to-think/</guid><description>&lt;p&gt;朋友发来消息的时候，我正对着屏幕发呆。&lt;/p&gt;
&lt;p&gt;&amp;quot;能不能帮我做个爬虫？监控几个跨境电商平台的价格和库存。&amp;quot;&lt;/p&gt;
&lt;p&gt;换作两年前，我大概会开始盘算用什么框架，要不要上分布式，反爬策略怎么设计。那天我脑子里冒出来的第一个念头是：这玩意儿，能不能直接扔给 LLM？&lt;/p&gt;
&lt;p&gt;不是偷懒（好吧，有一部分是）。是隐隐觉得，传统的爬虫思路走到 2025 年，已经有点力不从心了。前端框架生成的 DOM 结构像迷宫，反爬机制越来越聪明，维护一套爬虫脚本的成本比写它还要高。你花三天写好的解析逻辑，对方一个版本更新就能让你重来。&lt;/p&gt;
&lt;p&gt;我说，试试用 LLM 来做吧。&lt;/p&gt;
&lt;p&gt;核心思路其实不复杂：让 AI 像人一样操作浏览器。MCP（Model Context Protocol）提供的浏览器自动化能力，加上大模型的理解和决策能力，构成一个能&amp;quot;看懂&amp;quot;网页、&amp;quot;操作&amp;quot;网页、&amp;quot;分析&amp;quot;网页的系统。&lt;/p&gt;
&lt;p&gt;不是传统爬虫那种精确定位 CSS selector 然后提取文本的路子。是告诉 agent&amp;quot;帮我找到这个页面上所有产品的价格和库存状态&amp;quot;，它自己去看、去理解、去提取。页面结构变了也没关系——LLM 理解的是语义，不是 DOM 路径。&lt;/p&gt;
&lt;p&gt;听起来很美好。&lt;/p&gt;
&lt;p&gt;实际跑起来的第一天，token 账单就让我清醒了。&lt;/p&gt;
&lt;p&gt;MCP 的问题在于，每次工具调用都会把完整的上下文传回模型。浏览器截图、HTML 片段、操作日志，全部塞进 context window。一个简单的&amp;quot;打开页面、找到价格、提取数据&amp;quot;的操作，轻松吃掉几万 token。现代电商网站的 HTML——React 渲染出来的、带着几十层嵌套 div 和随机 class 名的 HTML——被原封不动地喂给模型去理解。&lt;/p&gt;
&lt;p&gt;用大炮打蚊子，炮弹还特别贵。&lt;/p&gt;
&lt;p&gt;换个角度想，这个&amp;quot;贵&amp;quot;买的其实是灵活性。传统爬虫对每个网站都要单独写解析逻辑，改一个 class 名就可能挂掉。LLM 方案消耗大归大，好处是不需要对每个平台写定制代码。说到底，是在烧钱换开发效率和维护成本。&lt;/p&gt;
&lt;p&gt;难说划不划算。至少，那个月我没写过一行 XPath。&lt;/p&gt;
&lt;p&gt;反爬检测这件事，传统方案的做法越来越像军备竞赛。对方加 device fingerprinting，我们模拟指纹；对方上行为分析，我们模拟人类行为模式；对方部署 CAPTCHA，我们接入打码平台。攻防双方都在同一个维度上卷。&lt;/p&gt;
&lt;p&gt;LLM 的介入让这个维度变了。&lt;/p&gt;
&lt;p&gt;不是&amp;quot;模拟得更像人类&amp;quot;，是 agent 操作的是真实的浏览器。鼠标移动、滚动节奏、点击间隔——这些行为数据不再需要精心伪造，它们本来就是真的。一个 AI agent 在页面上浏览、犹豫、对比，它的行为模式天然具有人类那种&amp;quot;不完美&amp;quot;。&lt;/p&gt;
&lt;p&gt;当然不是万能的。有些平台对 WebDriver 属性的检测仍然有效，Headless 模式的痕迹也不是完全消除不了。相比传统方案那种需要专门反反爬模块的做法，LLM agent 在&amp;quot;看起来像真人&amp;quot;这件事上，起点就高了一截。&lt;/p&gt;
&lt;p&gt;实际开发过程中，我很快发现了一条更划算的路。&lt;/p&gt;
&lt;p&gt;LLM 直接操作浏览器的成本太高了。每打开一个页面、每滚动一次、每提取一段文本，都是一次 API 调用。监控几十个产品、每天跑几轮，token 账单能抵上一顿不错的饭。LLM 从原始 HTML 里提取数据，本来也不是它最擅长的事——结构化输出才是。&lt;/p&gt;</description></item></channel></rss>