码以致用01 - Scrapy 爬虫框架简介

in #cn7 years ago (edited)

robot_rock_dribbble.jpg

Scrapy 是什么

Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等程序中。

Scrapy 的结构

Scrapy 的结构如下:


via Architecture Overview - Scrapy 1.5.0

在 Scrapy 中数据流是这样的:

  1. 引擎从爬虫(Spider)获得初始抓取请求
  2. 引擎在 Scheduler 中安排好请求,获取下一个抓取请求
  3. Scheduler 返回下一个抓取请求
  4. 引擎通过 Downloader 的 Middlewares 发送请求到 Downloader
  5. 完成页面下载后,Downloader 生成请求并通过 Middlewares 发送给引擎的
  6. 引擎接收来自 Downloader 的响应,通过 Spider Middlewares 发送给 Spider 处理
  7. Spider 处理请求并返回爬取内容,向引擎提交下一个请求
  8. 引擎发送爬取内容到 Item Pipelines,然后发送处理请求到 Scheduler,获取下一个爬取请求
  9. 重复 1-8 步,直到没有新的请求

安装 Scrapy

新建 Python 虚拟环境

比如用 conda,也可以用 virtualenv (参考:virtualenv installation instructions)

conda create -n {env_name} {list of packages}

上面的命令中,env_name 是用来折腾爬虫的项目环境名称,list of package是要一起安装的包,如 scrapypandas

我新建了一个叫 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:


@kidult00 . Thanks for Upvoting !

Sort:  

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。如果不想再收到我的留言,请回复“取消”。

Coin Marketplace

STEEM 0.15
TRX 0.15
JST 0.028
BTC 54034.48
ETH 2262.26
USDT 1.00
SBD 2.31