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实现增量式,持久化的爬虫
- 实现分布式爬虫
网友评论