zoukankan      html  css  js  c++  java
  • Scrapy爬虫框架第二讲(Linux环境)【初识Scrapy框架】

    在系统学习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 框架的使用是否有了一个宏观的认识,我们再接再厉,马上开启进阶学习吧!

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

  • 相关阅读:
    几个Tab,滑动门,选项卡,图片切换
    超多的CSS3圆角渐变网页按钮
    B2B(企业对企业)、B2C(企业对个人)、C2C(个人对个人)
    如何获取一个数据库的所有建表语句与创建索引的语句?
    Linux学习笔记(7)CRT实现windows与linux的文件上传下载
    (4.17)sql server中的uuid获取与使用
    【等待优化】SQL SERVER常见等待——解决会话等待产生的系统问题
    sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)
    always on 之路实践(未完)
    (4.16)存储过程的加密与解密
  • 原文地址:https://www.cnblogs.com/518894-lu/p/9028970.html
Copyright © 2011-2022 走看看