增量式:

  • 用来检测网站中数据的更新情况

  1. from scrapy.linkextractors import LinkExtractor
  2. from scrapy.spiders import CrawlSpider, Rule
  3. from redis import Redis
  4. class DianyingSpider(CrawlSpider):
  5. """
  6. www.4567tv.tv
  7. """
  8. name = 'dianying'
  9. # allowed_domains = ['https://www.4567tv.tv/index.php/vod/show/id/1/page/388.html']
  10. start_urls = ['https://www.4567tv.tv/index.php/vod/show/id/8/page/1.html']
  11. link = LinkExtractor(allow=r'/index.php/vod/show/id/8/page/\d+\.html')
  12. rules = (
  13. Rule(link, callback='parse_item', follow=True),
  14. )
  15. conn = Redis(host='127.0.0.1', port=6379)
  16. def parse_item(self, response):
  17. li_list = response.xpath('//li[@class="col-md-6 col-sm-4 col-xs-3"]')
  18. for li in li_list:
  19. detail_url = 'https://www.4567tv.tv' + li.xpath('./div/a/@href').extract_first()
  20. if_num = self.conn.sadd('dianying', detail_url)
  21. print(if_num)
  22. if if_num:
  23. print('有最新数据的更新......')
  24. # yield scrapy.Request(url=detail_url, callback=self.detail_callback)
  25. else:
  26. print('暂无最新数据可爬取......')
  27. def detail_callback(self, response):
  28. title = response.xpath('//h1/text()').extract_first()
  29. zhuyan = response.xpath('//div[@class="stui-content__detail"]/p[2]//text()').extract()
  30. print(title, zhuyan)

对于文本内容 使用

  1. import scrapy
  2. from scrapy.linkextractors import LinkExtractor
  3. from scrapy.spiders import CrawlSpider, Rule
  4. from redis import Redis
  5. from qiubaiPro.items import QiubaiproItem
  6. import hashlib
  7. class QiubaiSpider(CrawlSpider):
  8. name = 'qiubai'
  9. # allowed_domains = ['www.xxx.com']
  10. start_urls = ['https://www.******.com/text/']
  11. conn = Redis(host='127.0.0.1',port=6379)
  12. rules = (
  13. Rule(LinkExtractor(allow=r'/text/page/\d+/'), callback='parse_item', follow=True),
  14. )
  15. def parse_item(self, response):
  16. # print(response)
  17. div_list = response.xpath('//div[@id="content-left"]/div')
  18. for div in div_list:
  19. item = QiubaiproItem()
  20. item['author'] = div.xpath('./div[1]/a[2]/h2/text()').extract_first()
  21. item['content'] = div.xpath('.//div[@class="content"]/span//text()').extract()
  22. item['content'] = ''.join(item['content'])
  23. data = item['author']+item['content']
  24. #对数据生成一个数据指纹
  25. data_hash = hashlib.sha256(data.encode()).hexdigest()
  26. ex = self.conn.sadd('if_data',data_hash)
  27. if ex == 1:
  28. print('数据更新,可爬......')
  29. yield item
  30. else:
  31. print('暂无更新数据......')

Scrapy 框架 增量式的更多相关文章

  1. 基于Scrapy框架的增量式爬虫

    概述 概念:监测 核心技术:去重 基于 redis 的一个去重 适合使用增量式的网站: 基于深度爬取的 对爬取过的页面url进行一个记录(记录表) 基于非深度爬取的 记录表:爬取过的数据对应的数据指纹 ...

  2. Scrapy 增量式爬虫

    Scrapy 增量式爬虫 https://blog.csdn.net/mygodit/article/details/83931009 https://blog.csdn.net/mygodit/ar ...

  3. 爬虫---scrapy分布式和增量式

    分布式 概念: 需要搭建一个分布式的机群, 然后在每一台电脑中执行同一组程序, 让其对某一网站的数据进行联合分布爬取. 原生的scrapy框架不能实现分布式的原因 调度器不能被共享, 管道也不能被共享 ...

  4. 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

    爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...

  5. Scrapy 框架 总结

    总结: 1.中间件:下载中间件(拦截请求和响应) - process_request: - prceess_response: - process_exception: - 请求: - UA伪装: - ...

  6. Scrapy框架(3)

    一.如何提升scrapy框架的爬取效率 增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100,并发设 ...

  7. Scrapy框架学习参考资料

    00.Python网络爬虫第三弹<爬取get请求的页面数据> 01.jupyter环境安装 02.Python网络爬虫第二弹<http和https协议> 03.Python网络 ...

  8. Scrapy框架的应用

    一, Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有 ...

  9. 爬虫Ⅱ:scrapy框架

    爬虫Ⅱ:scrapy框架 step5: Scrapy框架初识 Scrapy框架的使用 pySpider 什么是框架: 就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中) scr ...

随机推荐

  1. [日常] HTTP协议状态码

    100-199 信息性状态码 100 continue 请继续 101 switching protocols 切换协议,返回upgraded头 200-299 成功状态码 200 ok 201 cr ...

  2. Maven(七)Eclipse使用Maven命令

    由于没有mvn compile (其余命令类似) 可以点解上面框中选项手动输入compile

  3. Get与Post的主要区别

    这里附一篇自己的简短理解 get相对于post更不安全,虽然都可以加密 get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中: 使用post提交的页面在点击[刷新]按钮的时候浏 ...

  4. JS中的反柯里化( uncurrying)

    反柯里化 相反,反柯里化的作用在与扩大函数的适用性,使本来作为特定对象所拥有的功能的函数可以被任意对象所用.即把如下给定的函数签名, obj.func(arg1, arg2) 转化成一个函数形式,签名 ...

  5. meta、link、script的常用写法

    meta 设置编码格式 <meta charset='utf-8'> 设置关键字 <meta name="keywords" content="音乐 播 ...

  6. Android-简单总结一下图片压缩

    最近项目需要用到图片压缩,所以简单总结一下.大致分为三种压缩. 图片质量压缩. 意思就是降低图片的质量,针对文件处理,但本身的像素点并不会减少. 本来像素点是这样的,经过算法计算,若一个像素点周围所存 ...

  7. Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

  8. 微软的wp版remotedesktop第三方库居然用了openssl和苹果的东西

    微软的wp版remotedesktop居然用了openssl和苹果的东西,这真是想不通.不说openssl的漏洞问题,windows nt已经带了很全面的加解密api.

  9. ERP服务启动后无法连接数据库的解决方法

    请安照步骤一步一步走,一个方法一个方法试. 方法一: 第一步,退出ERP 第二步,卸载sql服务,操作方法如下(win+R—输入cmd—输入sc delete mysql_sl 回车键) 第三步,重启 ...

  10. unix2dos和dos2unix处理换行问题

    今天同事QQ给发来一个文件内容如下: 希望把文件内容转换为update table_name set col_name=第一列 where col_name=第二列;这种SQL格式,使用UE列模式秒秒 ...