提交 2d1b965e 作者: 薛凌堃

百度搜索标题采集修改

上级 7e627d93
#coding=utf-8 #coding=utf-8
...@@ -362,20 +362,25 @@ class BaiduSpider(object): ...@@ -362,20 +362,25 @@ class BaiduSpider(object):
try: try:
detailurl=detailmsg['detailUrl'] detailurl=detailmsg['detailUrl']
title = detailmsg['title'] title = detailmsg['title']
content,contentWithTag=self.extractorMsg(detailurl,title) content,contentWithTag,title_=self.extractorMsg(detailurl,title)
contentWithTag=self.rmTagattr(contentWithTag,detailurl) contentWithTag=self.rmTagattr(contentWithTag,detailurl)
except Exception as e: except Exception as e:
content='' content=''
contentWithTag='' contentWithTag=''
title_ = ''
currentdate=self.getNowDate() currentdate=self.getNowDate()
kword=self.searchkw kword=self.searchkw
publishDate=detailmsg['publishTag'] publishDate=detailmsg['publishTag']
publishDate=publishDate+'' publishDate=publishDate+''
# publishtime=self.paserTime(publishtime) # publishtime=self.paserTime(publishtime)
# publishDate=publishtime.strftime("%Y-%m-%d %H:%M:%S") # publishDate=publishtime.strftime("%Y-%m-%d %H:%M:%S")
if '...' in detailmsg['title']:
title = title_
else:
title = detailmsg['title']
detailmsg={ detailmsg={
'title':detailmsg['title'], # 'title':detailmsg['title'],
'title':title,
'source':detailmsg['sourceTag'], 'source':detailmsg['sourceTag'],
'detailurl':detailurl, 'detailurl':detailurl,
'content':content, 'content':content,
...@@ -416,6 +421,8 @@ class BaiduSpider(object): ...@@ -416,6 +421,8 @@ class BaiduSpider(object):
raw_html=self.webDriver(url) raw_html=self.webDriver(url)
sm=SmartExtractor(lang) sm=SmartExtractor(lang)
article=sm.extract_by_html(raw_html) article=sm.extract_by_html(raw_html)
#todo:标题获取全部标题
title=article.title
content=article.cleaned_text content=article.cleaned_text
contentWithTag=article.text contentWithTag=article.text
except Exception as e: except Exception as e:
...@@ -423,12 +430,14 @@ class BaiduSpider(object): ...@@ -423,12 +430,14 @@ class BaiduSpider(object):
raw_html=self.webDriver(url) raw_html=self.webDriver(url)
sm=SmartExtractor(lang) sm=SmartExtractor(lang)
article=sm.extract_by_html(raw_html) article=sm.extract_by_html(raw_html)
# todo:标题获取全部标题
title = article.title
content=article.cleaned_text content=article.cleaned_text
contentWithTag=article.text contentWithTag=article.text
except Exception as e: except Exception as e:
print('抽取失败!!') print('抽取失败!!')
return content,contentWithTag return content,contentWithTag,title
def detect_language(self,html): def detect_language(self,html):
soup = BeautifulSoup(html, "html.parser") soup = BeautifulSoup(html, "html.parser")
...@@ -464,6 +473,7 @@ class BaiduSpider(object): ...@@ -464,6 +473,7 @@ class BaiduSpider(object):
try: try:
bdetail=self.getDetailmsg(detailmsg) bdetail=self.getDetailmsg(detailmsg)
processitem=self.getProcessitem(bdetail) processitem=self.getProcessitem(bdetail)
if processitem:
try: try:
self.sendkafka(processitem) self.sendkafka(processitem)
self.r.sadd('pybaidu_baidu_'+self.wordsCode, processitem['sourceAddress']) self.r.sadd('pybaidu_baidu_'+self.wordsCode, processitem['sourceAddress'])
...@@ -480,6 +490,8 @@ class BaiduSpider(object): ...@@ -480,6 +490,8 @@ class BaiduSpider(object):
# 关闭当前新窗口 # 关闭当前新窗口
# self.driver.close() # self.driver.close()
time.sleep(1) time.sleep(1)
else:
self.logger.info(f"抽取内容或标题为空!{bdetail['kword']}===={detailUrl}")
except Exception as e: except Exception as e:
time.sleep(3) time.sleep(3)
self.logger.info("详情页解析异常!"+detailUrl) self.logger.info("详情页解析异常!"+detailUrl)
...@@ -490,7 +502,8 @@ class BaiduSpider(object): ...@@ -490,7 +502,8 @@ class BaiduSpider(object):
def getProcessitem(self,bdetail): def getProcessitem(self,bdetail):
nowDate=self.getNowDate() nowDate=self.getNowDate()
content=bdetail['content'] content=bdetail['content']
if content!='': title = bdetail['title']
if content!='' or title != '':
processitem={ processitem={
"sid":self.sid, "sid":self.sid,
"source":"3", "source":"3",
...@@ -504,6 +517,8 @@ class BaiduSpider(object): ...@@ -504,6 +517,8 @@ class BaiduSpider(object):
} }
return processitem return processitem
else:
return None
def sendkafka(self,processitem): def sendkafka(self,processitem):
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
2、连接kafka做信息的获取,与存储 2、连接kafka做信息的获取,与存储
""" """
import random
import time import time
import redis import redis
...@@ -163,10 +164,10 @@ class BaiduTaskJob(object): ...@@ -163,10 +164,10 @@ class BaiduTaskJob(object):
return kwList return kwList
def runSpider(self,kwmsg,com_name): def runSpider(self,kwmsg):
searchkw=com_name + kwmsg['kw'] searchkw = kwmsg['kw']
wordsCode=kwmsg['wordsCode'] wordsCode = kwmsg['wordsCode']
sid=kwmsg['sid'] sid = kwmsg['sid']
baiduSpider=BaiduSpider(searchkw,wordsCode,sid) baiduSpider=BaiduSpider(searchkw,wordsCode,sid)
try: try:
...@@ -217,25 +218,31 @@ if __name__ == '__main__': ...@@ -217,25 +218,31 @@ if __name__ == '__main__':
# ss='(中国机床工具工业协会|中国内燃机工业协会|中国机电工业价格协会|中国机械电子兵器船舶工业档案学会|中国仪器仪表行业协会|中国工程机械工业协会|中国文化办公设备制造行业协会|中国机械工业金属切削刀具技术协会|中国机械工业教育协会|中国汽车工业协会|中国机械通用零部件工业协会|中国环保机械行业协会|中国模具工业协会|中国机械工业勘察设计协会|中国机械制造工艺协会|中国机械工业审计学会|中国轴承工业协会|中国机电一体化技术应用协会|中国机械工程学会|中国液压气动密封件工业协会|中国铸造协会|中国通用机械工业协会|中国锻压协会|中国制冷空调工业协会|中国热处理行业协会|中国电工技术学会|中国仪器仪表学会|中国石油和石油化工设备工业协会|中国表面工程协会|中国食品和包装机械工业协会|中国焊接协会|中国汽车工程学会|中国塑料机械工业协会|中国机械工业企业管理协会|中国印刷及设备器材工业协会|中国机械工业质量管理协会|中国电器工业协会|中国机械工业安全卫生协会|中国重型机械工业协会|中国机械工业标准化技术协会|中国机械工业职工思想政治工作研究会|中国农业机械工业协会|中国机电装备维修与改造技术协会 |机械工业信息研究院|机械工业教育发展中心|机械工业经济管理研究院|机械工业信息中心|机械工业人才开发服务中心|机械工业北京电工技术经济研究所|机械工业技术发展基金会|机械工业哈尔滨焊接技术培训中心|机械工业仪器仪表综合技术经济研究所)+(私收会费|私吞|肆意牟利|损失浪费|索贿|贪财|贪官污吏|贪污|违背组织原则|违法|违纪|为官不廉|为政擅权|窝案|舞弊|泄露国家机密|信鬼神|性关系|虚假信息|虚假招标|隐瞒不报|隐瞒真相|营私|鬻爵|主动投案|资产流失|钻空子|钻漏洞|被调查|被双开|不担当|不老实|不良影响|不正当|不作为|超标准建设|超标准装修|吃空饷|吃拿卡要|渎职|对党不忠诚|非法批地|腐败|腐虫|腐化堕落|公车私用|公费开销|公款吃喝|公款出境|公款旅游|勾结|官迷心窍|好色|回扣|贿赂|挤占挪用|纪律审查|监察调查|监守自盗|践踏法律|接受审查调查|截留克扣|开除党籍|开除公职|抗议|利欲熏心|敛财|乱摊派|乱作为|落马|落网|买官|买卖审批权限|卖官|谋取暴利|谋取私利|目无法纪|幕后交易|弄虚作假|挪用公款|骗取|钱色交易|潜规则|侵害权益|侵吞公款|侵占挪用|圈子文化|权利扭曲|权钱交易|权色交易|山头主义|涉案|生活糜烂|生活奢靡|失察|失管|收送|受贿|双规|双开|私分|私人会所|私设小金库|负面|下降|违规|不利|亏损|上诉|不法|不良名单|停职|公开谴责|公诉|内幕交易|刑事拘留|刑事责任|刑拘|判决|判刑|判赔|司法处置|合同纠纷|处分|处罚|强制执行|仲裁|伪造|伪造公章|投案|投诉|拘留|接受调查|控诉|查封|涉嫌|涉诉监察调查|纠纷|经营异常名录|缉捕|罚单|罚款|罚金|罪犯|自首|获刑|行贿|警示函|贪腐|违约金|追究刑责|造假|逮捕|非法|非法集资判决书|申诉|纠纷|通报|开除|留党察看|追债|逃债|资产负债率|情色交易|搞权钱|曝光|黑料|重罚|虚假报告|侵犯)' # ss='(中国机床工具工业协会|中国内燃机工业协会|中国机电工业价格协会|中国机械电子兵器船舶工业档案学会|中国仪器仪表行业协会|中国工程机械工业协会|中国文化办公设备制造行业协会|中国机械工业金属切削刀具技术协会|中国机械工业教育协会|中国汽车工业协会|中国机械通用零部件工业协会|中国环保机械行业协会|中国模具工业协会|中国机械工业勘察设计协会|中国机械制造工艺协会|中国机械工业审计学会|中国轴承工业协会|中国机电一体化技术应用协会|中国机械工程学会|中国液压气动密封件工业协会|中国铸造协会|中国通用机械工业协会|中国锻压协会|中国制冷空调工业协会|中国热处理行业协会|中国电工技术学会|中国仪器仪表学会|中国石油和石油化工设备工业协会|中国表面工程协会|中国食品和包装机械工业协会|中国焊接协会|中国汽车工程学会|中国塑料机械工业协会|中国机械工业企业管理协会|中国印刷及设备器材工业协会|中国机械工业质量管理协会|中国电器工业协会|中国机械工业安全卫生协会|中国重型机械工业协会|中国机械工业标准化技术协会|中国机械工业职工思想政治工作研究会|中国农业机械工业协会|中国机电装备维修与改造技术协会 |机械工业信息研究院|机械工业教育发展中心|机械工业经济管理研究院|机械工业信息中心|机械工业人才开发服务中心|机械工业北京电工技术经济研究所|机械工业技术发展基金会|机械工业哈尔滨焊接技术培训中心|机械工业仪器仪表综合技术经济研究所)+(私收会费|私吞|肆意牟利|损失浪费|索贿|贪财|贪官污吏|贪污|违背组织原则|违法|违纪|为官不廉|为政擅权|窝案|舞弊|泄露国家机密|信鬼神|性关系|虚假信息|虚假招标|隐瞒不报|隐瞒真相|营私|鬻爵|主动投案|资产流失|钻空子|钻漏洞|被调查|被双开|不担当|不老实|不良影响|不正当|不作为|超标准建设|超标准装修|吃空饷|吃拿卡要|渎职|对党不忠诚|非法批地|腐败|腐虫|腐化堕落|公车私用|公费开销|公款吃喝|公款出境|公款旅游|勾结|官迷心窍|好色|回扣|贿赂|挤占挪用|纪律审查|监察调查|监守自盗|践踏法律|接受审查调查|截留克扣|开除党籍|开除公职|抗议|利欲熏心|敛财|乱摊派|乱作为|落马|落网|买官|买卖审批权限|卖官|谋取暴利|谋取私利|目无法纪|幕后交易|弄虚作假|挪用公款|骗取|钱色交易|潜规则|侵害权益|侵吞公款|侵占挪用|圈子文化|权利扭曲|权钱交易|权色交易|山头主义|涉案|生活糜烂|生活奢靡|失察|失管|收送|受贿|双规|双开|私分|私人会所|私设小金库|负面|下降|违规|不利|亏损|上诉|不法|不良名单|停职|公开谴责|公诉|内幕交易|刑事拘留|刑事责任|刑拘|判决|判刑|判赔|司法处置|合同纠纷|处分|处罚|强制执行|仲裁|伪造|伪造公章|投案|投诉|拘留|接受调查|控诉|查封|涉嫌|涉诉监察调查|纠纷|经营异常名录|缉捕|罚单|罚款|罚金|罪犯|自首|获刑|行贿|警示函|贪腐|违约金|追究刑责|造假|逮捕|非法|非法集资判决书|申诉|纠纷|通报|开除|留党察看|追债|逃债|资产负债率|情色交易|搞权钱|曝光|黑料|重罚|虚假报告|侵犯)'
while True: while True:
try: try:
com_name = baiduTaskJob.get_comname()
if com_name:
pass
else:
break
codeList = [ codeList = [
'KW-20240206-0001', 'KW-20220809-0004',
'KW-20240206-0002', 'KW-20220524-0004',
'KW-20240206-0003' 'KW-20220809-0005',
'KW-20220824-0001',
'KW-20220809-0002',
'KW-20220809-0003',
'KW-20220826-0001',
'KW-20220602-0003',
'KW-20220602-0002',
'KW-20220113-0007',
'KW-20220113-0006',
'KW-20220108-0004',
'KW-20220113-0004'
] ]
for codeid in codeList:
for codeid in codeList[::-1]:
try: try:
# keymsg=baiduTaskJob.getkafka() # keymsg=baiduTaskJob.getkafka()
keymsg=baiduTaskJob.getkeyFromredis(codeid) keymsg = baiduTaskJob.getkeyFromredis(codeid)
kwList=baiduTaskJob.paserKeyMsg(keymsg) kwList = baiduTaskJob.paserKeyMsg(keymsg)
# 从列表中随机选择5个数据 # 从列表中随机选择5个数据
if len(kwList)<1: if len(kwList) < 1:
continue continue
# kwList = random.sample(kwList, 4) kwList = random.sample(kwList, 4)
logger.info(f"需要搜索的关键词:{kwList}") logger.info(f"需要搜索的关键词:{kwList}")
except Exception as e: except Exception as e:
logger.info("从kafka拿取信息失败!") logger.info("从kafka拿取信息失败!")
...@@ -245,7 +252,7 @@ if __name__ == '__main__': ...@@ -245,7 +252,7 @@ if __name__ == '__main__':
# 创建一个线程池,指定线程数量为4 # 创建一个线程池,指定线程数量为4
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor: with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
# 提交任务给线程池,每个任务处理一个数据 # 提交任务给线程池,每个任务处理一个数据
results = [executor.submit(baiduTaskJob.runSpider, data,com_name) for data in kwList] results = [executor.submit(baiduTaskJob.runSpider, data) for data in kwList]
# 获取任务的执行结果 # 获取任务的执行结果
for future in concurrent.futures.as_completed(results): for future in concurrent.futures.as_completed(results):
try: try:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论