Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 [1]
支持自定义,方便,好用。异步的,,速度嗖嗖嗖的!!!
异步处理框架,可配置和可扩展程度非常高,Python中使用最广泛的爬虫框架
常用命令:
方法 | 描述 |
---|---|
scrapy startproject scrapydemo | 创建一个名为 scrapydemo 的scrapy项目 |
scrapy genspider scrapydemo bilibili.com | 创建一个名为scrapydemo的spider,访问域名为bilibili.com |
scrapy crawl -o xxx.json | 数据存储到 xxx.json |
cmdline.execute(“scrapy crawl scrapyspider”.split()) | 启动scrapy的scrapyspider文件 |
查看scrapy命令
scrapy -h
安装
pip install scrapy
创建scrapy项目
scrapy startproject scrapydemo
切换到scrapydemo项目
cd scrapydemo
创建一个新的spider
scrapy genspider scrapydemo bilibili.com
流程图:
画图
request
发送给Engine(引擎request
发送给Scheduler(调度器request
,通过DownloaderMiddleware(可选,主要有UA
, Cookie
,代理IP
)进行层层过滤发送给Downloaderresponse
后,又经过SpiderMiddleware(爬虫中间件)发送给Engineresponse
数据之后,返回给Spider,parse()
方法对获取到的response
数据进行处理,解析出item
和request
,然后发送给Engineitem
和request
,将item
发送给ItemPipeline(管道)进行数据持久化,将request
发送给Scheduler(调度request(url)
请求,程序才停止。注意!即使某个request中报错了,程序也会继续执行到没有request请求才停止。
部分文件说明:
文件 | 说明 |
---|---|
items.py | 定义采集的数据字段,用于结构化数据 |
pipelines.py | 数据持久化 |
settings.py | 配置文件 |
spiders | 编写爬虫规则 |
middleware.py | 中间件,如为请求添加cookie、ua等 |
链家
查看君子协议:https://www.bilibili.com/robots.txt
存储为csv:
cmdline.execute('scrapy crawl spider -o lianjia.csv'.split())
存储为json:
cmdline.execute('scrapy crawl spider -o lianjia.json'.split())
存储到数据库:
pipeline.py