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,"------------------更新成功")
以上仅供参考