Scrapling 爬虫教程:从单页采集到全量爬取的完整指南
【免费下载链接】Scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling
Scrapling 是一个自适应的 Python 网络爬虫框架,覆盖从单条请求到全量爬取的全部场景。它最核心的卖点是:解析器会在页面改版后自动重新定位元素,抓取器则内置反检测能力,开箱即用。
一分钟看懂 Scrapling 的爬虫架构
这个框架分三层:抓取层负责拿页面,解析层负责取数据,爬虫层负责跑量。
抓取层提供三类 Fetcher:Fetcher走纯 HTTP 并模拟 Chrome 的 TLS 指纹;DynamicFetcher驱动无头浏览器渲染 JS;StealthyFetcher在动态抓取之上叠加指纹伪装,能绕过 Cloudflare 验证。解析层支持 CSS、XPath、文本匹配多种选法,还能按相似度找元素。爬虫层则是 Scrapy 风格的 Spider,带并发控制、断点续爬和代理轮换。
三步完成环境配置与首次运行
① 安装基础包,只含解析引擎,足够解析现成的 HTML:
pip install scrapling② 加上抓取器与 Spider 的依赖,不装这步后续导入会报错:
pip install "scrapling[fetchers]"③ 下载隐蔽抓取所需的浏览器及系统依赖:
scrapling install装完后跑这段最小示例验证环境:
from scrapling.fetchers import Fetcher page = Fetcher.get("https://quotes.toscrape.com/", impersonate="chrome") quotes = page.css(".quote .text::text").getall() print(f"抓到 {len(quotes)} 条名言") print(quotes[0])impersonate="chrome"值得说一下:它让请求带上最新版 Chrome 的 TLS 指纹和请求头。很多网站的反爬第一道坎就是指纹识别,伪造 UA 字符串没用,伪造 TLS 握手特征才管用。
官方还提供无代码模式,scrapling shell能打开交互式抓取 shell,把现成的 curl 命令直接转成请求执行:
用爬虫框架批量采集 10 页数据并导出 JSON
上面是单页抓取,真实任务往往是多页。定义一个 Spider,从第一页顺着"下一页"链接一路采到底:
from scrapling.spiders import Spider, Response class QuotesSpider(Spider): name = "quotes" start_urls = ["https://quotes.toscrape.com/"] concurrent_requests = 5 async def parse(self, response: Response): for quote in response.css(".quote"): yield { "text": quote.css(".text::text").get(), "author": quote.css(".author::text").get(), } next_page = response.css(".next a") if next_page: yield response.follow(next_page[0].attrib["href"]) result = QuotesSpider(crawldir="./crawl_data").start() print(f"共采集 {len(result.items)} 条") result.items.to_json("quotes.json")两个参数说明一下"为什么这么写"。concurrent_requests = 5控制同时在途的请求数,填 50 大概率触发限流,填 1 又太慢,5 起步比较稳。crawldir="./crawl_data"开启检查点:按下 Ctrl+C 会优雅停机并把未完成请求存盘,下次用同一路径启动时自动续爬,长任务不怕中断。
💡AutoThrottle 是什么:Spider 会按目标站点的响应速度自动调节每个域名的请求延迟,一旦被限流就加倍等待,恢复后再提速。你不用再手动猜
sleep该填几秒。
跑不通时的四类高频问题排查
- 现象:
import scrapling.fetchers报 ModuleNotFoundError →原因:基础安装只带解析器 →解法:按上面第②③步装全依赖并下载浏览器。 - 现象:返回 403 或 Cloudflare 验证页 →原因:TLS 指纹或行为被识别 →解法:把
Fetcher换成StealthyFetcher,遇验证页加solve_cloudflare=True。 - 现象:浏览器里能看到内容,解析结果却是空 →原因:数据靠 JS 动态渲染 →解法:改用
DynamicFetcher,传network_idle=True等网络空闲后再取 HTML。 - 现象:之前好好的选择器突然找不到元素 →原因:网站改了 class 或结构 →解法:首次 css 选择时加
auto_save=True记录元素特征,下次传adaptive=True自动重定位。
延伸与资源
把抓取器、解析器、Spider 都跑通之后,直接换目标站点就能开工,官方示例站 quotes.toscrape.com 适合反复调试。
- 官方文档:docs/index.md
- Spider 入门:docs/spiders/getting-started.md
- 抓取器源码:scrapling/fetchers/
- CLI 命令参考:docs/cli/overview.md
【免费下载链接】Scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapling
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考