码以致用01 - Scrapy 爬虫框架简介
Scrapy 是什么
Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等程序中。
Scrapy 的结构
Scrapy 的结构如下:
via Architecture Overview - Scrapy 1.5.0
在 Scrapy 中数据流是这样的:
- 引擎从爬虫(Spider)获得初始抓取请求
- 引擎在 Scheduler 中安排好请求,获取下一个抓取请求
- Scheduler 返回下一个抓取请求
- 引擎通过 Downloader 的 Middlewares 发送请求到 Downloader
- 完成页面下载后,Downloader 生成请求并通过 Middlewares 发送给引擎的
- 引擎接收来自 Downloader 的响应,通过 Spider Middlewares 发送给 Spider 处理
- Spider 处理请求并返回爬取内容,向引擎提交下一个请求
- 引擎发送爬取内容到 Item Pipelines,然后发送处理请求到 Scheduler,获取下一个爬取请求
- 重复 1-8 步,直到没有新的请求
安装 Scrapy
新建 Python 虚拟环境
比如用 conda
,也可以用 virtualenv
(参考:virtualenv installation instructions)
conda create -n {env_name} {list of packages}
上面的命令中,env_name
是用来折腾爬虫的项目环境名称,list of package
是要一起安装的包,如 scrapy
,pandas
。
我新建了一个叫 pyp
的环境,打开这 Python 环境的命令是:
source activate pyp
如果你使用 zsh
,可以在 zshrc
文件里面新建 alias,并 source ~/.zshrc
保存生效,下次就可以用别名快捷打开这个环境了。
安装 Scrapy
通过 pip
安装很方便
pip install Scrapy
新建 scrapy 项目
进入存放项目的目录,用命令新建一个爬虫项目:
scrapy startproject {name}
新建好以后,可以看到起名为 lyrics 的爬虫项目,生成了以下目录和文件:
├── lyrics
│ ├── __init__.py
│ ├── __pycache__
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── __pycache__
└── scrapy.cfg
4 directories, 7 files
对照上面介绍的 Scrapy 引擎的结构,可以大概知道每个文件的作用。
下一篇 码以致用02 - 用 Scrapy 爬虫抓取简单心理咨询师资料,我们尝试用 Scrapy 抓取一些简单的网页内容。
Ref
You might be also interested in:
- The Ambiguities of Experience | 组织和经验的迷思
- Upgrade your design thinking | 升级你的设计思维
- 5 Key Concepts of Programming | 学编程?从五个思维训练开始
- Why and How You Should Use Git | 多用 Git 少交税
- Learning tips for our brain | 别傻了,傲娇大脑爱学习?
- Model about behavior change | 你为什么不想做,想做也做不到
- Change about change | 莫弃疗——关于改变的改变
@kidult00 . Thanks for Upvoting !
Lovely great no wrods how explain.but Nice camera work.near the nature.Beautiful post line with nice photo selection.text words super..theme of pst super.best of luck
Nice job doing.today post is super.excellent blog post..i gave you . five star.my wish you also check my post to.also we both fallow if you like.
하늘과 물이 모두 푸르네요. 푸른 사진 속에서 나오는 푸른 기운을 받아갑니다.
不错不错!
:) 谢谢
你好哟!cn区点赞机器人 @cnbuddy 谢谢你对cn区的贡献。让我们携手努力,共同促进cn区快速发展。更多cn区动态,请留意我的主页。欢迎关注我们的大股东 @skenan,并注册使用由其开发的 CNsteem.com。如果不想再收到我的留言,请回复“取消”。