爬虫怎么写prompt
以下基于deepseek r1 总结:
以下是为大模型设计的结构化Prompt模板,用于生成专业级网络爬虫Python脚本。此Prompt包含技术约束、反检测策略和数据处理要求,可根据具体需求调整参数:
爬虫脚本生成Prompt模板1
请按照以下要求生成一个Python网络爬虫脚本:
1. 目标网站信息
- 网站URL:[在此填写具体网址,如https://example.com/products]
- 目标数据:[明确描述需要爬取的数据,如商品名称/价格/评论等]
- 页面类型:[静态HTML/动态渲染/API接口/分页列表/详情页等]
2. 技术要求
# 必选技术栈
from selenium.webdriver import ChromeOptions
from bs4 import BeautifulSoup
import pandas as pd
import requests
3. 反检测要求
- 实现随机User-Agent轮换
- 设置合理请求间隔(2-5秒)
- 处理Cloudflare等反爬机制
- 使用IP代理池(如需)
3. 数据存储规范
输出格式:JSON/CSV/Excel(选择一种)
字段清洗要求:[如去除HTML标签/统一货币格式等]
去重机制:[基于URL/ID/时间戳等]
5. 异常处理
HTTP错误码处理(403/404/500等)
超时重试机制(最多3次)
反爬触发时的自动规避策略
6. 性能优化
并发请求数限制
缓存已爬取URL
增量爬取支持
7. 输出示例
// 展示期望的数据结构样例
{"product_id": "123","name": "智能手机","price": {"original": 5999, "discount": 5499},"rating": 4.5
}
8. 特殊要求
[是否需要登录/验证码处理]
[是否处理JavaScript渲染内容]
[是否有地理限制]
请生成完整可运行的Python代码,包含:
反爬绕过实现
数据解析逻辑
存储模块
日志记录系统
进度监控功能
爬虫脚本生成Prompt模板2(供参考)
-
技术栈明确化
要求使用:- requests-html 处理动态渲染
- Scrapy-Redis 实现分布式爬取
- PyQuery 代替XPath解析
-
反爬策略强化
需要实现:- 鼠标移动轨迹模拟
- 指纹浏览器配置
- TLS指纹混淆
-
数据合规性要求
遵守:- robots.txt规则
- 欧盟GDPR数据保护
- 目标网站ToS条款
-
性能指标量化
控制:- 请求频率 ≤ 10次/分钟
- 内存占用 < 500MB
- 断点续爬功能
示例输出(简版爬虫)
根据上述Prompt,大模型可能生成的代码框架:
import requests
from fake_useragent import UserAgent
import time
import json
from bs4 import BeautifulSoupclass ProfessionalCrawler:def __init__(self):self.session = requests.Session()self.ua = UserAgent()self.proxies = {"http": "socks5://127.0.0.1:1080"}def get_random_headers(self):return {'User-Agent': self.ua.random,'Accept-Language': 'en-US,en;q=0.9','Referer': 'https://www.google.com/'}def scrape(self, url):try:resp = self.session.get(url,headers=self.get_random_headers(),proxies=self.proxies,timeout=10)resp.raise_for_status()# 使用BS4解析soup = BeautifulSoup(resp.text, 'lxml')data = {'title': soup.find('h1').get_text().strip(),'price': float(soup.select('.price')[0].text.replace('$', ''))}# 智能延迟time.sleep(max(2, min(5, len(resp.text)/5000)))return dataexcept Exception as e:print(f"爬取失败: {str(e)}")return Noneif __name__ == '__main__':crawler = ProfessionalCrawler()result = crawler.scrape("https://example.com/product/123")with open('output.json', 'w') as f:json.dump(result, f, indent=2)
Prompt优化建议
-
增加约束条件
-
补充要求:
- 代码必须通过Pylint检测
- 支持Docker容器化部署
- 包含单元测试模块
-
指定架构模式
要求采用:- 生产者-消费者模式处理队列
- 状态机管理爬取流程
- 支持Prometheus监控
-
法律声明
必须包含:- 版权声明注释
- 使用条款确认
- 数据删除接口