OK,因为数据分析的缘故需要采集一些数据,所以学了一段时间的爬虫,但都是利用urllib,requests,Beautifulsoup采取一些小规模的数据,感觉并不顺手,所以从今天开始进入scrapy框架的学习。
事先申明环境配置
- win10
- python3.6
- Pycharm2017.3专业版(网上找秘钥或是使用edu邮箱)
另附我的上一篇文章Windows下pip install scrapy 出错,含一些虚拟环境的创建,pycharm的使用安利
新建Scrapy工程和项目
- 进入命令行模式(使用Pychram下方的Terminal即可),cd到你项目文件下
- 通过
scrapy startproject ProjectName(你的项目名)
新建工程,得到如图所示文件结构(注:截图时较晚,main.py和jobbole.py是后期创建的,忽略就好)
3. 进入命令行模式(使用Pychram下方的Terminal即可),通过scrapy genspider name(爬虫文件名) 域名
新建爬虫文件
注意,这里可以选择不同模板(默认为basic),通过
scrapy genspider -t 模板名 name 域名
可选模板有:
这里我们通过爬取豆瓣读书来学习,所以如图所示
项目结构如下
OK,咱们来看看项目结构,如上图:
- 核心是spider文件夹,这里是放你处理爬虫逻辑代码的地方
- items.py是存放数据的容器,定义要获得的数据
- pipelines.py管道文件(类似django的路由文件),对items中的数据进行处理
- settings.py顾名思义,对项目的一些设置
- main.py自定义的,下文会说到
双击打开doubanread.py,这是你写爬虫逻辑和代码的地方,可见:
如图它自动创建好了DoubanreadSpider类,其中需要注意几点:name用于爬虫项目启动;start_urls是列表可用来存放链接
OK,命令行启动豆瓣爬虫scrapy crawl doubanread(这里就是上面所提的name)
,不出意外,一定会报错缺少pywin32这个包。通过Pycharm安装即可,不会的话,看文章开头的链接。
再次命令行启动,可以运行了。
这里再提一个开头说的main.py,在一个视频中学到的,用于在Pycharm中调试。在项目文件夹下新建一个main.py ,代码如下:
#新建main文件,用来设置断点调试程序
#在其他py文件上打上断点后,debug该main文件即可
from scrapy.cmdline import execute3#调用这个可以执行scrapy脚本
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))#找到工程目录才能运行scrapy命令,你可以打印一下看看
# print(os.path.dirname(os.path.abspath(__file__)))
execute(['scrapy','crawl','doubanread'])#这其实就是scrapy启动项目的命令拆分
在其他py文件上打上断点后,debug该main文件即可。
OK,学习一门语言不动手是不行的,先通过一个简单的爬虫(豆瓣TOP250爬取)来具体学习scrapy的使用。
我想豆瓣top250是大多数初学者都爬过的网页,毕竟他几乎没有反扒机制,而且页面结构简单,有利于信心增长,先来看一下该爬虫的流程图 。
parse是解析页面链接,detail_parse是解析书籍具体信息,‘获取评论’是获取每本书的热门短评(取前20页)。分析评论可知,短评更具代表性,且每本书都有上万条短评,但差不多15页左右短评点赞数就为0,且褒贬都有,这也表明前15页左右评论较其他评论更具代表性。