在系统学习Scrapy前我们首先在看一个实际的项目,从宏观上把握下Scrapy爬虫框架的流程(填空题训练开始了,小伙伴们准备好了吗?):


 

这里我选取了百度阅读,我们来爬取所有新书榜的书单包括其书名;评分;出版商;价格信息    /目标站点:https://yuedu.baidu.com/rank/newbook


 

具体流程:

(1)、创建项目 scrapy startproject + 项目名

(2)、定义spider(蜘蛛)scrapy genspider + 名称 +获取网站的主域名

这里我们创建了一个名为baidu_read的项目 并定义了名为book 的spider 主域名为yuedu.baidu.com

我们使用tree 命令查看目录树结构,如没安装,请小伙伴们终端键入sudo apt-get install tree 安装

我们可以看到系统已自动生成了整个框架(就像老师出好个填空题的题目,下面我们需要将文字填入空格来实现整个scrapy爬虫项目)

下面我们来分析下上面的各个文件是用来干嘛的?(这里不详谈,我们先来了解其重要组件即可,下面我会详细介绍)

下面是我的理解:

第一个:items.py--就是用来定义你要爬什么

第二个:middlewares.py--这相当于你的主机(客户端)与服务器中的墙(打个比方吧:你喜欢一个女生想了解她的信息,但你又不好意思直接去问,怎么办呢?这当然是找她的小伙伴帮你打听了呀,但这位小伙伴有权决定帮不帮你,她不帮你(比方用robots.txt爬虫协议限制你),然后一首凉凉送给你!这里这位小伙伴相当于这道墙,而你就是客户机,你的心上人当然是服务器了!do you understand?小伙伴们)

第三个:piplelines.py-就是用来对爬取的数据进行处理(包括清洗、去重、等等)

第四个:settings.py--项目的配置文件(这里就是小伙伴们启用各个组件的开关(我的理解))     

第五个(主要):spiders下的 book.py这就是整个项目的核心,也是整个程序的核心,我们通过这个小蜘蛛来实现我们的目标(怎么爬?)

 (3)、让我们开始填空:

first step :修改item.py如下:

second step:修改book.py如下:

修改过程中我们需要使用scrapy shell 进行调试

下面小伙伴们我们先来介绍下scrapy shell 的使用

首先:激活虚拟环境source course-python3.5-env/bin/activate 

安装下ipython(python交互式环境包)使得我们的界面更美观

键入:scrapy shell https://yuedu.baidu.com/rank/newbook?pn=0(爬取该网站)

发现返回结果中没有response,这是为什么呢?

答:我们的爬虫去访问网站,首先会去访问网站的robots.txt(网络爬虫协议)从下面的百度阅读robot.txt我们可以看出处理像Baiduspider可以访问该网站,其他的不可以访问网站

User-agent: Baiduspider
Disallow: /w?
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Googlebot
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: MSNBot
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Baiduspider-image
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: YoudaoBot
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sogou web spider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sogou inst spider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sogou spider2
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sogou blog
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sogou News Spider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sogou Orion spider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: ChinasoSpider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sosospider
Disallow: /search?
Disallow: /submit
Disallow: /upload


User-agent: yisouspider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: EasouSpider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: 360Spider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: HaoSouSpider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: Sogou Spider
Disallow: /search?
Disallow: /submit
Disallow: /upload

User-agent: *
Disallow: /
针对这种情况我们怎么办呢?
1、更改settings.py 即不遵守robots.txt协议,这种方式会造成我们的ip被封,不建议使用 (将ROBOTSTXT_OBEY =False)
2、伪装浏览器进行爬取(USER_AGENT = 'Baiduspider')(推荐这种方式)

 重新运行scrapy shell https://yuedu.baidu.com/rank/newbook?pn=0 ,这下我们成功爬取了该网站

 更改book.py文件如下:

本部分的编写结合了scrapy shell 的测试,后面我们详解

最后运行爬虫如下:

可以看到我们的爬虫在运行

部分运行结果展示

总结:

我们使用了scrapy 中的iem.py / settings.py /spider.py 组件实现了一个简单的爬虫项目,小伙伴们对scrapy 框架的使用是否有了一个宏观的认识,我们再接再厉,马上开启进阶学习吧!

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

 

posted on 2018-05-12 16:26  疾风_lu  阅读(633)  评论(0编辑  收藏  举报