鸿蒙PC:Qt适配OpenHarmony实战【烟火菜单】:做一个三栏式本地菜谱手册
2026/5/24 23:45:10
# 创建虚拟环境 python -m venv autoglm-env source autoglm-env/bin/activate # Linux/Mac # autoglm-env\Scripts\activate # Windows # 安装核心依赖 pip install openglm selenium requests beautifulsoup4| 配置项 | 说明 | 示例值 |
|---|---|---|
| target_url | 目标采集页面地址 | https://www.xiaohongshu.com/explore |
| use_headless | 是否启用无头模式 | true |
| extract_fields | 需提取的内容字段 | title, content, author, likes |
from openautoglm import AutoTask # 加载采集任务 task = AutoTask.from_yaml("configs/xhs_collect.yaml") # 执行并输出结果 results = task.run() print(results.to_json(indent=2))task = { "target_url": "https://example.com/news", "selector": "article h2 a", # 提取新闻标题链接 "pagination": "next-page-btn", "extract_fields": ["title", "publish_time"] }上述配置描述了一个典型网页采集任务,其中selector指定DOM选择器路径,pagination支持翻页自动跳转,extract_fields定义需提取的语义字段,由后续NLP模块补全结构化信息。requirements.txt锁定版本:flask==2.3.3 requests==2.31.0 cryptography==41.0.3上述版本约束确保构建可复现,防止因库更新引入不兼容变更。export DATABASE_PASSWORD='secure_password_2024' export API_KEY='a1b2c3d4e5'结合dotenv类库从.env文件加载,实现配置与代码分离。生产环境中应配合 KMS 或 Hashicorp Vault 等工具实现加密存储与动态分发,提升密钥访问的审计与控制能力。crawler.OnHTML(".product-item", func(e *colly.XMLElement) { title := e.ChildText(".title") price := e.ChildText(".price") image := e.ChildAttr("img", "src") // 输出结构化数据 fmt.Printf("Title: %s, Price: %s, Image: %s\n", title, price, image) })上述代码通过OnHTML监听匹配元素,利用ChildText和ChildAttr提取子节点文本与属性值,实现精准字段捕获。package main import ( "time" "golang.org/x/time/rate" ) func main() { limiter := rate.NewLimiter(2, 5) // 每秒2个令牌,初始容量5 for i := 0; i < 10; i++ { limiter.Wait(context.Background()) fetch("https://api.example.com/data") } }该代码中,NewLimiter(2, 5)表示每秒生成2个请求令牌,最多容纳5个,超出则阻塞等待,从而实现稳定的请求节流。import requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Referer": "https://www.xiaohongshu.com" } params = { "keyword": "咖啡探店", "page": 1 } response = requests.get("https://www.xiaohongshu.com/api/sns/web/v1/search/notes", headers=headers, params=params)上述代码中,User-Agent模拟浏览器访问,Referer防止反爬,params指定搜索关键词与分页参数。response.json()解析并存储至本地 CSV 文件,实现初步数据采集闭环。