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

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

  • 相关阅读:
    让IIS支持解析.json格式文件
    请问4-20位字符可由中文,英文,数字及“—”,“-”组成 正则表达式
    jquery中的$(document).ready(function(){})和$(window).load()比较
    根据数组对象的某个属性值找到指定的元素
    JS数组中的indexOf方法
    bat修改注册表
    生动详细解释javascript的冒泡和捕获
    Jquery Easyui与Jquery Bootstrap的比较
    缺少的文件是 ..packagesMicrosoft.Net.Compilers.1.0.0uildMicrosoft.Net.Compilers.props。
    C#中ToString()格式详解
  • 原文地址:https://www.cnblogs.com/518894-lu/p/9028970.html
Copyright © 2020-2023  润新知