爬虫scrapy框架学习(三)

  3.示例2RedisSpider:

              a.使用方法:它与示例1只有一个地方不同,就是将start_url存入redis中,代码如下:

                        

             b.总结:该示例很简单,只是将start_url存入redis_key中,就可实现分布式爬虫

                          多台电脑共同完成一个爬虫,数据不会重复

    4.示例3RedisCrawlSpider:

                a.使用方法:也是使用redis_key方法,不过使用CrawlSpider组件请求url地址,方便快捷:

                    

十、Crontab定时执行爬虫

            

            

十一、当当爬虫实例

    11.1目标:爬取当当网站的图书数据

    11.2实现:

        

            

             setting.py的配置如下:

                    

十二、收获总结感悟

          到此,关于Python爬虫的知识点就学完了,总结一下爬虫的知识点,核心就是4个步骤,

          构建请求-》获取响应-》提取数据-》保存数据

          只要实现了这四步就是一个完整的爬虫,其他所有的知识点都是为了实现这四步操作,

- 项目名字:scarpy爬虫

- 项目介绍:

   爬了京东,当当,亚马逊等网站,获取网站上的图书数据,每个月定时抓取图书数据,使用该数据实现了图书信息的汇总,比对和筛选

- 开发环境

   linux+pycharm+requests+mongodb+redis+crontab+scrapy_redis+ scarpy + mysql+gevent+celery+threading

- 使用技术

  - 使用requests...把数据存储在mongodb中

  - 使用crontab实现程序的定时启动抓取

  - url地址的去重

    - 使用redis的集合,把request对象的XXX字段通过sha1生成指纹,放入redis的集合中进行去重,实现基于url地址的增量式爬虫

    - 布隆过滤

  - 对数据的去重

    - 把数据的XXX字段通过sha1生成指纹,放入redis的集合中进行去重,实现增量式爬虫

  - 反扒

    - 代理ip

      - 购买了第三的代理ip,组成代理ip池,其中的ip没两天更新一次,同时使用单独的程序来检查代理ip的可用

    - cookie

      - 准备了XX个账号,使用requests获取账号的对应的cookie,存储在redis中,后续发送请求的时候随机选择cookie

      - 使用selenium来进行模拟登陆,获取cookie,保存在Redis中

    - 数据通过js生成

      - 分析js,通过chrome浏览器定位js的位置,寻找js生成数据的方式

      - 通过selenium来模拟页面的加载内容,获取页面动态加载后的数据

  - 提高爬虫效率

    - 使用多线,线程池,协程,celery来完成爬虫

    - 使用scrapy框架来实现爬虫,

      - 不能断点续爬,请求过的url地址不能持久化

        - 使用scrapy_redis

      - 不能对数据进行去重

        - 把数据的XXX字段通过sha1生成指纹,放入redis的集合中进行去重,实现增量式爬虫

    - scrapy_redis

      - domz实现增量式,持久化的爬虫

      - 实现分布式爬虫

猜你喜欢

转载自blog.csdn.net/qq_40652101/article/details/91043998