
Codex Profiler
通过 Telegram 命令管理 OpenAI Codex 配置文件,支持用量查询与 OAuth 令牌刷新,并提供队列化安全应用(queued safe apply)及进度更新功能。
Crawl4ai 是一个由 AI 驱动的网络爬虫框架,专为高效地从网站中提取结构化数据而设计。它将传统的 HTML 解析技术与 AI 能力相结合,可处理动态内容、智能提取文本,并对来自复杂网页的原始数据进行清洗与结构化。
当 Codex 需要执行以下操作时,请使用本技能:
触发短语示例:
from crawl4ai import AsyncWebCrawler, BrowserMode async def scrape_page(url): async with AsyncWebCrawler() as crawler: result = await crawler.arun( url=url, browser_mode=BrowserMode.LATEST, headless=True ) return result.markdown, result.clean_html
from crawl4ai import AsyncWebCrawler, JsonModeScreener
import json
async def extract_products(url):
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(
url=url,
screenshot=True,
javascript=True,
bypass_cache=True
)
# 提取商品数据
products = []
for item in result.extracted_content:
if item['type'] == 'product':
products.append({
'name': item['name'],
'price': item['price'],
'url': item['url']
})
return products
场景: 用户希望爬取某网站上的全部文章标题。
from crawl4ai import AsyncWebCrawler
async def scrape_articles(url):
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(
url=url,
javascript=True,
verbose=True
)
# 从 HTML 中提取文章标题
articles = result.extracted_content if result.extracted_content else []
titles = [item.get('name', item.get('text', '')) for item in articles]
return titles
触发短语: “为此网站爬取文章标题” 或 “从 [URL] 获取所有标题”
场景: 网站通过 JavaScript 加载数据。
from crawl4ai import AsyncWebCrawler async def scrape_dynamic_site(url): async with AsyncWebCrawler() as crawler: result = await crawler.arun( url=url, javascript=True, # 等待 JS 执行完成 wait_for="body", # 等待特定元素出现 delay=1.5, # 页面加载后额外等待时间 headless=True ) return result.markdown
触发短语: “爬取这个动态网站” 或 “该页面需通过 JavaScript 加载数据”
场景: 提取价格、描述等特定字段。
from crawl4ai import AsyncWebCrawler
async def extract_product_details(url):
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(
url=url,
screenshot=True,
js_code="""
const products = document.querySelectorAll('.product');
return Array.from(products).map(p => ({
name: p.querySelector('.name')?.textContent,
price: p.querySelector('.price')?.textContent,
url: p.querySelector('a')?.href
}));
"""
)
return result.extracted_content
触发短语: “从此页面提取商品详情” 或 “从 [URL] 获取价格和名称”
场景: 清理杂乱 HTML 并提取干净文本。
from crawl4ai import AsyncWebCrawler async def clean_and_parse(url): async with AsyncWebCrawler() as crawler: result = await crawler.arun( url=url, remove_tags=['script', 'style', 'nav', 'footer', 'header'], only_main_content=True ) # 清洗并返回 Markdown 格式内容 clean_text = result.clean_html return clean_text
触发短语: “清洗此 HTML” 或 “从此页面提取主体内容”
async def custom_scrape(url, custom_js): async with AsyncWebCrawler() as crawler: result = await crawler.arun( url=url, js_code=custom_js, js_only=True # 仅执行 JS,不下载其他资源 ) return result.extracted_content
from crawl4ai import AsyncWebCrawler
async def multi_page_scrape(base_url, urls):
async with AsyncWebCrawler() as crawler:
results = []
for url in urls:
result = await crawler.arun(
url=url,
session_id=f"session_{url}",
bypass_cache=True
)
results.append({
'url': url,
'content': result.markdown,
'status': result.success
})
return results
robots.txt 及服务条款async def robust_scrape(url):
try:
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(
url=url,
timeout=30000 # 设置 30 秒超时
)
if result.success:
return result.markdown, result.extracted_content
else:
print(f"爬取失败:{result.error_message}")
return None, None
except Exception as e:
print(f"爬取异常:{str(e)}")
return None, None
Crawl4ai 支持多种输出格式:
result.markdown)result.clean_html)result.extracted_content)result.screenshot)result.links)常用爬虫操作的 Python 脚本:
scrape_single_page.py — 基础爬取工具scrape_multiple_pages.py — 支持分页的批量爬取extract_from_html.py — HTML 解析辅助脚本clean_html.py — HTML 清洗工具文档与示例:
api_reference.md — 完整 API 文档examples.md — 常见用例与模式error_handling.md — 故障排查指南|
1 |
|







