【Scrapy】走进成熟的爬虫框架

时间:2022-05-07
本文章向大家介绍【Scrapy】走进成熟的爬虫框架,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

今天简单聊聊Scrapy的安装。

前几天有小伙伴留言说能不能介绍推荐一下爬虫框架,我给他推荐了Scrapy,本来想偷个懒,推荐他去看官方文档,里面有一些demo代码可供学习测试。结果收到回复说文档中演示用到的网站已经无法访问了。所以只能自己来简单写一下了,也算是自己一个学习记录。

Scrapy是什么?

定义介绍我也不复制粘贴了。简单来说,Scrapy是一个中大型的爬虫框架,框架的意义就在于帮你预设好了很多可以用的东西,让你可以从复杂的数据流和底层控制中抽离出来,专心于页面的解析即可完成中大项目爬虫,甚至是分布式爬虫。

但是爬虫入门是不推荐直接从框架入手的,直接从框架入手会让你头晕目眩,觉得哪儿哪儿都看不懂,有点类似于还没学会基础的遣词造句就直接套用模板写成文章,自然是十分吃力的。所以还是推荐大家有一定的手写爬虫基础再深入了解框架。(当然还没有入门爬虫的同学…可以催更我的爬虫入门文章…)

那么首先是安装。

Python的版本选择之前提过,推荐大家全面拥抱Python 3.x。

很久以前,大概是我刚入门学习Scrapy时,Scrapy还没有支持Python 3.x,那时一部分爬虫工程师把Scrapy不支持Python 3.x作为不进行迁移的理由。当然了,那时更具体的原因是Scrapy所依赖的twisted和mitmproxy不支持Python 3.x。

现在我依然推荐大家全面拥抱Python 3.x。

如果你还未安装Python,推荐你按照这篇文章操作。

【一起学Python】从安装说起,初探Anaconda——最省心省力的环境管理:http://t.cn/Rm5YdC5

这次我们以本地环境来进行安装(Windows+Anaconda),由于Python的跨平台特性,我们本地写的代码可以很容易迁移到别的电脑或服务器使用。(当然了,从规范使用的角度上推荐大家使用单独的env,或者直接使用docker或者vagrant,不过那就说来话长了…以后可以考虑单独介绍)

按照惯例,我们直接使用 pip install scrapy 进行安装。

那么,你大概率会遇到这样的错误:

具体的错误原因…缺少Microsoft Visual C++ 14.0…你也可以自己通过其他渠道解决,当然我们最推荐的做法是直接使用 conda install scrapy 命令(前提是你安装了Anaconda而非普通Python)。

如果遇到写入权限错误,请用管理员模式运行cmd。

之后我们可以写一个很小的demo,依然是官方案例中的DMOZ,DMOZ网站是一个著名的开放式分类目录(Open DirectoryProject),原版的DMOZ已于去年的3月17日停止了运营,目前网站处于403状态。但是网上大量过去的教程都是以DMOZ为案例的。我为大家找到了原DMOZ网站的静态镜像站,大家可以直接访问 http://dmoztools.net/

大家按照官方文档的步骤继续做就可以了,后续的问题不大。

(http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html)

需要注意的就是工作目录问题。

启动Scrapy项目。

scrapy startproject tutorial

进入目录,我们可以看到自动生成的一些文件,这些文件就是scrapy框架所需要的最基础的组织结构。

  • scrapy.cfg: 项目的配置文件
  • tutorial/: 该项目的python模块。之后您将在此加入代码。
  • tutorial/items.py: 项目中的item文件.
  • tutorial/pipelines.py: 项目中的pipelines文件.
  • tutorial/settings.py: 项目的设置文件.
  • tutorial/spiders/: 放置spider代码的目录.

这些组织结构的具体定义我们之后会分篇具体介绍。今天不再赘述了,一篇文章写的大而长的话,估计要改上好多天发不出去。还是写一点算一点吧。

其实官方文档已经写的比较详细了,不过有些东西还是不太好理解,手边有一本专门讲Scrapy的书,最近正在读,会把一些读书笔记和实际项目写给大家。