← 返回 Skills 市场
Scrapling Install
作者
Stefan Ming
· GitHub ↗
· v1.0.0
· MIT-0
45
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install scrapling-install
功能描述
Advanced web scraping with Scrapling — MCP-native guidance for extraction, crawling, and anti-bot handling. Use via mcporter (MCP) to call the `scrapling` MC...
使用说明 (SKILL.md)
Scrapling MCP — Web Scraping Guidance
Guidance Layer + MCP Integration
Use this skill for strategy and patterns. For execution, call Scrapling's MCP server viamcporter.
Quick Start (MCP)
1. Install Scrapling with MCP support
pip install scrapling[mcp]
# Or for full features:
pip install scrapling[mcp,playwright]
python -m playwright install chromium
2. Add to OpenClaw MCP config
{
"mcpServers": {
"scrapling": {
"command": "python",
"args": ["-m", "scrapling.mcp"]
}
}
}
3. Call via mcporter
mcporter call scrapling fetch_page --url "https://example.com"
Execution vs Guidance
| Task | Tool | Example |
|---|---|---|
| Fetch a page | mcporter | mcporter call scrapling fetch_page --url URL |
| Extract with CSS | mcporter | mcporter call scrapling css_select --selector ".title::text" |
| Which fetcher to use? | This skill | See "Fetcher Selection Guide" below |
| Anti-bot strategy? | This skill | See "Anti-Bot Escalation Ladder" |
| Complex crawl patterns? | This skill | See "Spider Recipes" |
Fetcher Selection Guide
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Fetcher │────▶│ DynamicFetcher │────▶│ StealthyFetcher │
│ (HTTP) │ │ (Browser/JS) │ │ (Anti-bot) │
└─────────────────┘ └──────────────────┘ └──────────────────┘
Fastest JS-rendered Cloudflare,
Static pages SPAs, React/Vue Turnstile, etc.
Decision Tree
- Static HTML? →
Fetcher(10-100x faster) - Need JS execution? →
DynamicFetcher - Getting blocked? →
StealthyFetcher - Complex session? → Use Session variants
MCP Fetch Modes
fetch_page— HTTP fetcherfetch_dynamic— Browser-based with Playwrightfetch_stealthy— Anti-bot bypass mode
Anti-Bot Escalation Ladder
Level 1: Polite HTTP
# MCP call: fetch_page with options
{
"url": "https://example.com",
"headers": {"User-Agent": "..."},
"delay": 2.0
}
Level 2: Session Persistence
# Use sessions for cookie/state across requests
FetcherSession(impersonate="chrome") # TLS fingerprint spoofing
Level 3: Stealth Mode
# MCP: fetch_stealthy
StealthyFetcher.fetch(
url,
headless=True,
solve_cloudflare=True, # Auto-solve Turnstile
network_idle=True
)
Level 4: Proxy Rotation
See references/proxy-rotation.md
Adaptive Scraping (Anti-Fragile)
Scrapling can survive website redesigns using adaptive selectors:
# First run — save fingerprints
products = page.css('.product', auto_save=True)
# Later runs — auto-relocate if DOM changed
products = page.css('.product', adaptive=True)
MCP usage:
mcporter call scrapling css_select \\
--selector ".product" \\
--adaptive true \\
--auto-save true
Spider Framework (Large Crawls)
When to use Spiders vs direct fetching:
- ✅ Spider: 10+ pages, concurrency needed, resume capability, proxy rotation
- ✅ Direct: 1-5 pages, quick extraction, simple flow
Basic Spider Pattern
from scrapling.spiders import Spider, Response
class ProductSpider(Spider):
name = "products"
start_urls = ["https://example.com/products"]
concurrent_requests = 10
download_delay = 1.0
async def parse(self, response: Response):
for product in response.css('.product'):
yield {
"name": product.css('h2::text').get(),
"price": product.css('.price::text').get(),
"url": response.url
}
# Follow pagination
next_page = response.css('.next a::attr(href)').get()
if next_page:
yield response.follow(next_page)
# Run with resume capability
result = ProductSpider(crawldir="./crawl_data").start()
result.items.to_jsonl("products.jsonl")
Advanced: Multi-Session Spider
from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession
class MultiSessionSpider(Spider):
name = "multi"
start_urls = ["https://example.com/"]
def configure_sessions(self, manager):
manager.add("fast", FetcherSession(impersonate="chrome"))
manager.add("stealth", AsyncStealthySession(headless=True), lazy=True)
async def parse(self, response: Response):
for link in response.css('a::attr(href)').getall():
if "/protected/" in link:
yield Request(link, sid="stealth")
else:
yield Request(link, sid="fast")
Spider Features
- Pause/Resume:
crawldirparameter saves checkpoints - Streaming:
async for item in spider.stream()for real-time processing - Auto-retry: Configurable retry on blocked requests
- Export: Built-in
to_json(),to_jsonl()
CLI & Interactive Shell
Terminal Extraction (No Code)
# Extract to markdown
scrapling extract get 'https://example.com' content.md
# Extract specific element
scrapling extract get 'https://example.com' content.txt \\
--css-selector '.article' \\
--impersonate 'chrome'
# Stealth mode
scrapling extract stealthy-fetch 'https://protected.com' content.md \\
--no-headless \\
--solve-cloudflare
Interactive Shell
scrapling shell
# Inside shell:
>>> page = Fetcher.get('https://example.com')
>>> page.css('h1::text').get()
>>> page.find_all('div', class_='item')
Parser API (Beyond CSS/XPath)
BeautifulSoup-Style Methods
# Find by attributes
page.find_all('div', {'class': 'product', 'data-id': True})
page.find_all('div', class_='product', id=re.compile(r'item-\\d+'))
# Text search
page.find_by_text('Add to Cart', tag='button')
page.find_by_regex(r'\\$\\d+\\.\\d{2}')
# Navigation
first = page.css('.product')[0]
parent = first.parent
siblings = first.next_siblings
children = first.children
# Similarity
similar = first.find_similar() # Find visually/structurally similar elements
below = first.below_elements() # Elements below in DOM
Auto-Generated Selectors
# Get robust selector for any element
element = page.css('.product')[0]
selector = element.auto_css_selector() # Returns stable CSS path
xpath = element.auto_xpath()
Proxy Rotation
from scrapling.spiders import ProxyRotator
# Cyclic rotation
rotator = ProxyRotator([
"http://proxy1:8080",
"http://proxy2:8080",
"http://user:pass@proxy3:8080"
], strategy="cyclic")
# Use with any session
with FetcherSession(proxy=rotator.next()) as session:
page = session.get('https://example.com')
Common Recipes
Pagination Patterns
# Page numbers
for page_num in range(1, 11):
url = f"https://example.com/products?page={page_num}"
...
# Next button
while next_page := response.css('.next a::attr(href)').get():
yield response.follow(next_page)
# Infinite scroll (DynamicFetcher)
with DynamicSession() as session:
page = session.fetch(url)
page.scroll_to_bottom()
items = page.css('.item').getall()
Login Sessions
with StealthySession(headless=False) as session:
# Login
login_page = session.fetch('https://example.com/login')
login_page.fill('input[name="username"]', 'user')
login_page.fill('input[name="password"]', 'pass')
login_page.click('button[type="submit"]')
# Now session has cookies
protected_page = session.fetch('https://example.com/dashboard')
Next.js Data Extraction
# Extract JSON from __NEXT_DATA__
import json
import re
next_data = json.loads(
re.search(
r'__NEXT_DATA__" type="application/json">(.*?)\x3C/script>',
page.html_content,
re.S
).group(1)
)
props = next_data['props']['pageProps']
Output Formats
# JSON (pretty)
result.items.to_json('output.json')
# JSONL (streaming, one per line)
result.items.to_jsonl('output.jsonl')
# Python objects
for item in result.items:
print(item['title'])
Performance Tips
- Use HTTP fetcher when possible — 10-100x faster than browser
- Impersonate browsers —
impersonate='chrome'for TLS fingerprinting - HTTP/3 support —
FetcherSession(http3=True) - Limit resources —
disable_resources=Truein Dynamic/Stealthy - Connection pooling — Reuse sessions across requests
Guardrails (Always)
- Only scrape content you're authorized to access
- Respect robots.txt and ToS
- Add delays (
download_delay) for large crawls - Don't bypass paywalls or authentication without permission
- Never scrape personal/sensitive data
References
references/mcp-setup.md— Detailed MCP configurationreferences/anti-bot.md— Anti-bot handling strategiesreferences/proxy-rotation.md— Proxy setup and rotationreferences/spider-recipes.md— Advanced crawling patternsreferences/api-reference.md— Quick API referencereferences/links.md— Official docs links
Scripts
scripts/scrapling_scrape.py— Quick one-off extractionscripts/scrapling_smoke_test.py— Test connectivity and anti-bot indicators
安全使用建议
Install only if you need advanced scraping for sites you own or have explicit permission to test. Avoid using the stealth, Cloudflare/Turnstile-solving, proxy-rotation, or login-session examples against third-party protected sites, accounts, paywalls, or personal data. Review the MCP server configuration and any scripts before use, and treat checkpoint deletion examples as destructive.
能力标签
能力评估
Purpose & Capability
The scraping purpose is coherent, but the capability set includes high-risk anti-bot bypass, stealth fetching, TLS/browser impersonation, proxy rotation, and login-session automation.
Instruction Scope
The skill has some guardrails, but several high-risk examples are presented as normal workflow steps before or without immediate authorization, privacy, account-security, and site-terms warnings.
Install Mechanism
Installation uses pip and adds a Scrapling MCP server plus optional Playwright browser support; this is disclosed and purpose-aligned, but it expands the agent's ability to browse and fetch third-party sites.
Credentials
Browser automation, Cloudflare/Turnstile solving, and proxy rotation are powerful relative to general scraping guidance and need tighter scoping to authorized targets.
Persistence & Privilege
The skill discusses session cookies, crawl checkpoints, and selector fingerprints, and includes one checkpoint-deletion recipe; no hidden persistence or privilege escalation was found.
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install scrapling-install - 安装完成后,直接呼叫该 Skill 的名称或使用
/scrapling-install触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release of scrapling-mcp: advanced web scraping guidance and strategy for Scrapling with MCP integration.
- Provides in-depth guidance for extraction strategies, crawler patterns, and anti-bot techniques.
- Details fetcher selection, anti-bot escalation, proxy rotation, and adaptive scraping best practices.
- Includes example usage with OpenClaw, mcporter, and Scrapling's own CLI and Python API.
- Features spider framework recipes, session management, selector adaptation, and advanced DOM navigation.
- Suitable for both quick extractions and large-scale, resilient web crawls.
元数据
常见问题
Scrapling Install 是什么?
Advanced web scraping with Scrapling — MCP-native guidance for extraction, crawling, and anti-bot handling. Use via mcporter (MCP) to call the `scrapling` MC... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 45 次。
如何安装 Scrapling Install?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install scrapling-install」即可一键安装,无需额外配置。
Scrapling Install 是免费的吗?
是的,Scrapling Install 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Scrapling Install 支持哪些平台?
Scrapling Install 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Scrapling Install?
由 Stefan Ming(@frisky1985)开发并维护,当前版本 v1.0.0。
推荐 Skills