用途:使用 Scrapy(Python 网页爬取与抓取框架)进行大规模网站抓取,适合爬取整站或跨多页跟随链接、提取结构化数据(价格、文章、商品列表)并输出为 JSON/CSV,也适合定时或大规模抓取管道。
主要能力:支持 CSS 与 XPath 选择器精确提取;内置请求限速、自动节流、重试与中间件;可跟随分页链接;支持 Item 管道处理与存储;输出 JSON、CSV、JSONL(每行一个 JSON 对象,适合大抓取)。
安装:pip install scrapy;Ubuntu/Debian 可用 sudo apt-get install -y python3-pip && pip install scrapy;macOS 可用 brew install python && pip install scrapy;用 scrapy version 验证。需 Python 3.8+,无需外部 API。
使用方式:创建项目 scrapy startproject myproject,生成爬虫 scrapy genspider quotes quotes.toscrape.com,运行 scrapy crawl quotes -o output.json 或 -o output.csv。也可用 scrapy runspider spider.py -o output.json 免项目运行。可传设置,如 -s DOWNLOAD_DELAY=1 -s AUTOTHROTTLE_ENABLED=True -s RETRY_TIMES=3。爬虫中定义 start_urls 与 parse,用 response.css 或 response.xpath 提取字段,用 response.follow 跟随分页。
最佳实践:启用 ROBOTSTXT_OBEY=True 遵守 robots.txt;设置 DOWNLOAD_DELAY 与 AUTOTHROTTLE_ENABLED 避免过载;设置可识别的 USER_AGENT;单域名礼貌抓取可设 CONCURRENT_REQUESTS_PER_DOMAIN=1;开发期可开 HTTPCACHE_ENABLED。不要抓取登录保护或付费墙内容。
限制与排错:robots.txt 禁止时需检查允许路径或获授权后关闭;数据为空需用 scrapy shell 调整选择器;429 或重定向过多需增大延迟、启用自动节流;JavaScript 渲染内容需 scrapy-playwright 或 scrapy-splash。错误日志输出到 stderr,未处理 HTTP 错误可触发 errback。