Scrapy 框架 增量式
增量式:
用来检测网站中数据的更新情况
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from redis import Redis
class DianyingSpider(CrawlSpider):
"""
www.4567tv.tv
"""
name = 'dianying'
# allowed_domains = ['https://www.4567tv.tv/index.php/vod/show/id/1/page/388.html']
start_urls = ['https://www.4567tv.tv/index.php/vod/show/id/8/page/1.html']
link = LinkExtractor(allow=r'/index.php/vod/show/id/8/page/\d+\.html')
rules = (
Rule(link, callback='parse_item', follow=True),
)
conn = Redis(host='127.0.0.1', port=6379)
def parse_item(self, response):
li_list = response.xpath('//li[@class="col-md-6 col-sm-4 col-xs-3"]')
for li in li_list:
detail_url = 'https://www.4567tv.tv' + li.xpath('./div/a/@href').extract_first()
if_num = self.conn.sadd('dianying', detail_url)
print(if_num)
if if_num:
print('有最新数据的更新......')
# yield scrapy.Request(url=detail_url, callback=self.detail_callback)
else:
print('暂无最新数据可爬取......')
def detail_callback(self, response):
title = response.xpath('//h1/text()').extract_first()
zhuyan = response.xpath('//div[@class="stui-content__detail"]/p[2]//text()').extract()
print(title, zhuyan)
对于文本内容 使用
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from redis import Redis
from qiubaiPro.items import QiubaiproItem
import hashlib
class QiubaiSpider(CrawlSpider):
name = 'qiubai'
# allowed_domains = ['www.xxx.com']
start_urls = ['https://www.******.com/text/']
conn = Redis(host='127.0.0.1',port=6379)
rules = (
Rule(LinkExtractor(allow=r'/text/page/\d+/'), callback='parse_item', follow=True),
)
def parse_item(self, response):
# print(response)
div_list = response.xpath('//div[@id="content-left"]/div')
for div in div_list:
item = QiubaiproItem()
item['author'] = div.xpath('./div[1]/a[2]/h2/text()').extract_first()
item['content'] = div.xpath('.//div[@class="content"]/span//text()').extract()
item['content'] = ''.join(item['content'])
data = item['author']+item['content']
#对数据生成一个数据指纹
data_hash = hashlib.sha256(data.encode()).hexdigest()
ex = self.conn.sadd('if_data',data_hash)
if ex == 1:
print('数据更新,可爬......')
yield item
else:
print('暂无更新数据......')
Scrapy 框架 增量式的更多相关文章
- 基于Scrapy框架的增量式爬虫
概述 概念:监测 核心技术:去重 基于 redis 的一个去重 适合使用增量式的网站: 基于深度爬取的 对爬取过的页面url进行一个记录(记录表) 基于非深度爬取的 记录表:爬取过的数据对应的数据指纹 ...
- Scrapy 增量式爬虫
Scrapy 增量式爬虫 https://blog.csdn.net/mygodit/article/details/83931009 https://blog.csdn.net/mygodit/ar ...
- 爬虫---scrapy分布式和增量式
分布式 概念: 需要搭建一个分布式的机群, 然后在每一台电脑中执行同一组程序, 让其对某一网站的数据进行联合分布爬取. 原生的scrapy框架不能实现分布式的原因 调度器不能被共享, 管道也不能被共享 ...
- 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式
爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...
- Scrapy 框架 总结
总结: 1.中间件:下载中间件(拦截请求和响应) - process_request: - prceess_response: - process_exception: - 请求: - UA伪装: - ...
- Scrapy框架(3)
一.如何提升scrapy框架的爬取效率 增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100,并发设 ...
- Scrapy框架学习参考资料
00.Python网络爬虫第三弹<爬取get请求的页面数据> 01.jupyter环境安装 02.Python网络爬虫第二弹<http和https协议> 03.Python网络 ...
- Scrapy框架的应用
一, Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有 ...
- 爬虫Ⅱ:scrapy框架
爬虫Ⅱ:scrapy框架 step5: Scrapy框架初识 Scrapy框架的使用 pySpider 什么是框架: 就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中) scr ...
随机推荐
- 如何把ASP.NET MVC项目部署到本地IIS上
默认情况下,在VisualStudio中开发网站,会运行在IISExpress中,如果想把网站部署到本地的IIS服务器上该怎么办呢? 一.首先,以管理员身份运行VisualStudio,否则在修改项目 ...
- c#的WebService和调用
WebService: 1.新建一个空白web应用程序 2.在上面建立的web应用程序添加web服务 4.保存发布至 IIS Client: 1.新建一个程序(可以是winform.控制台.web) ...
- [android] activity横竖屏切换的生命周期
模拟器横竖屏切换,ctrl+f11 界面activity会销毁,重新打开创建 第一种做法: 定死就是横屏 在清单文件,<activity/>节点部分,添加属性,设置屏幕朝向 android ...
- Java学习笔记之——包
可以利用包,把不同的类分类存放,方便管理 在同一个包下不允许出现同名的类,可以利用分包达到可以出现同名的类 (1)包的创建: 命名:尽量做到不重复 一般:域名倒置作为前缀,再加上功能等分包 eg: ...
- java过滤器(过滤器排序)
java过滤器(过滤器排序) 定义过滤器顺序是很简单的:匹配请求的过滤器将按照它们出现在部署描述符或者编程式配置中的顺序添加到过滤器链中(记住,如果同时再部署描述符或者编程式配置中设置了一些过滤器,那 ...
- WORLD 快速线
1,3个“-” 一条直线 2,3个“=” 一条双直线 3,3个“*” 一条虚线 4,3个“~” 一条波浪线 5, 3个“#” 一条隔行线
- 替换富文本里的px为rem
var content = '23px' content = content.replace(/(\d+)px/g, function(s, t) { s = s.replace('px', ''); ...
- 用js实现超链接导航菜单点击切换选中时的状态
项目中使用到点解导航切换不同的颜色,如果只是li选项卡还好办,这次用到的超链接选项卡,因为a链接每次点击都会刷新,所以浏览器记不住点击的状态,也没法切换点击状态,因为项目中有好多地方要用到,在网上找了 ...
- 2018-11-13 中文代码示例之Programming in Scala学习笔记第二三章
由于拷贝后文档格式有变, 仅摘几段如下. 完整而且代码带语法高亮的源版在: program-in-chinese/Programming_in_Scala_study_notes_zh 前言: 本书已 ...
- 25.Odoo产品分析 (三) – 人力资源板块(6) – 工资表(1)
查看Odoo产品分析系列--目录 工资表不在"应用"中,在搜索该模块时需要将默认的"应用"过滤删除掉. 安装工资表后,出现工资单菜单: 1. 薪资规则类别 ...