python 判断数据延期以及数据去重

1.去重

a.根据时间,标题,url进行判断

b.爬取网站动态链接 .click 进行跳转的网站

2.延期

a.通过去重确定是否为旧数据,可以根据标题判断,进行对比取到的时间是否一致,不一致则为延期信息

 def is_old_title(self, xpath_id, title, time_info): #判断去重
        title = title.strip()
        time_info = time_info.strip() #去空格

        config = {'pyConfigId': xpath_id, 'title': title, 'pageNum': 1, 'pageSize': 20, 'isLikeTitle': 0} #取config
        # if time_info and len(time_info) > 0: #判断时间
        #     config['time'] = time_info
        try:
            res = self.select_article(config) #有时间
        except:
            return -1, 0 #无时间
        # if res == -1:
        #     return -1, 0
        res=res.text
        # print(res)
        res=json.loads(res) #转格式
        res=res.get('returnValue',{}) #取returnValue里的内容
        res = res.get('list', [])#取returnValue里的list的内容
        if res and len(res) > 0: #判断res是否有数据
            return 1, res[0]['articleId'] #info_id
        else:
            return 0, 0

 def is_yanqi(self, xpath_id, title,time_info): #判断是否延期
        time_info = time_info.strip()
        config = {'pyConfigId': xpath_id, 'title':title, 'pageNum': 1, 'pageSize': 20, 'isLikeTitle': 0}   #不用传时间 因为就是根据时间进行判断的
        res = self.select_article(config) #
        row = res.text
        res = json.loads(row)  #转码
        if res["success"] == True:  #判断
            res = res.get("returnValue")
            if res and len(res) > 0:
                old_time = res['list']      #returnvalue中的list
                old_time=old_time[0]     #list的第一条,不写会报错
                old_time=old_time.get('time', '')     #old_time=res['time']表示是一样的

                if old_time.strip() != time_info.strip():
                    is_yanqi = 1
                else:
                    is_yanqi = 0
        return is_yanqi

封装两个函数 延期 去重 

3.调用

                is_old, info_id = connect.is_old_title(4756, data_one_page[index]['title'], data_one_page[index]['time'])    #传is_old 和 info_id 进来
            datas['info_id']=info_id #把info存到datas字典里
            if is_old: #如果is_odl=1 默认为1即true
                yanqi_1=connect.is_yanqi(4756,data_one_page[index]['title'], data_one_page[index]['time'])

                if yanqi_1:
                    #判断
                    datas['yanqi']=1
                    pass
                else:
                    datas['yanqi']=0
                    continue
            else:  #is_old=0 即flase
                # datas['isold']=0
                datas['yanqi']=0
data_one_page[index]['yanqi']=datas['yanqi']
data_one_page[index]['info_id'] = datas['info_id']

4.数据库

self.save_info(data_one_page[index]) #调用save_info 函数

def save_info(self,item):


item_yanqi=item['yanqi']  #数据库判断延期

            if item_yanqi:
                info_id=item['info_id']
                data = {
                    "articleId": info_id, #!
                    "time": date,
                    "isYanQi": 1,
                    "isUpload": 0,
                    'pyArticleDetail': {
                        'content': content
                    }
                }
                res = connect.update_info(data)
                res = res.json()
                if res["code"] == 200:
                    print(title,"------------------更新成功")

以上仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值