爬蟲怎么寫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監控
-
法律聲明
必須包含:- 版權聲明注釋
- 使用條款確認
- 數據刪除接口