百度百科关键词搜索获取信息
本实例为通过对百度百科APP进行Fiddler抓包来获取到百科的搜索API并对其进行解析来获取结果,具体见代码:
import codecs
import datetime
import time
import requests
import json
headers = {'Accept': 'application/json','content-type': 'application/x-www-form-urlencoded','Cookie': '_V=2.10.1; _T=dfysfewefi7yd3df; _A=baike_sapp; _C=3F3244A3E7B4019E5918FD5F8A4AED6F|O; BAIDUCUID=3F3244A3E7B4019E5918FD5F8A4AED6F|O; BAIDUID=CDE6CCCF3FBD674BF9116A9262A38B15:FG=1; SCENE=baikeapp','Referer': 'https://smartapps.cn/AZQtr4jkpf90T3X9QMWVLF1bkeV4LXxD/2.11.0.1/page-frame.html','User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; LYA-AL20 Build/HUAWEIVOG-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36 swan/2.21.0 swan-baikeapp/5.1.1 (Baidu; P1 5.1.1)','Host': 'baikeapi.baidu.com','Connection': 'Keep-Alive','Accept-Encoding': 'gzip'} #设置访问网页的Header,将浏览模式设置成手机模式,模拟手机上网(手机类型是iPhone)
# url="http://baikeapi.baidu.com/smartapp/appui/wiki/item?lemmaTitle=[keyword]&page=0"
url="https://baikeapi.baidu.com/smartapp/appui/wiki/item?lemmaTitle=[keyword]&page=0"
# key_word=['蜗居']
url3='https://baikeapi.baidu.com/smartapp/searchui/search/word?wd=%E5%AE%89%E5%AE%B6'
def getlemmaidReq(url3,key_word):itemUrl = url3.replace('[keyword]', key_word)requests.packages.urllib3.disable_warnings()resp = requests.get(url, headers=headers, allow_redirects=False, verify=False)
# 请求访问获取多义项itemid和title
def reqItemUrl(url,key_word):itemUrl=url.replace('[keyword]',key_word)requests.packages.urllib3.disable_warnings()resp = requests.get(itemUrl, headers=headers, allow_redirects=False, verify=False)if resp.status_code >= 200 and resp.status_code < 300:data=resp.json()navi=data["data"]if( 'navigation' in navi):return data["data"]["navigation"]else:return []
# 对多义项进行解析
def paseitem(lemmas):lemmaList=[]for lemma in lemmas:lemmadict=dict()lemmadict['lemmaId']=str(lemma.get('lemmaId'))lemmadict['lemmaDesc']=lemma.get('lemmaDesc')lemmadict['rank']=str(lemma.get('rank'))lemmaList.append(lemmadict)return lemmaListurl2='https://baikeapi.baidu.com/smartapp/appui/wiki/item?lemmaTitle=[keyword]&lemmaId=[itemid]&page=0'
def reqBasicInfoUrl(url2):requests.packages.urllib3.disable_warnings()response=requests.get(url2,headers=headers,allow_redirects=False, verify=False)data=response.json()return data# 获取词的基本信息
def paseLemmaMsg(data):basicMsg=''if 'structuredContent' in data['data']['version']['card']:msgList=data['data']['version']['card']['structuredContent']for msg in msgList:basicMsg+=msg.get('name')basicMsg+='='basicMsg+=msg['value'][0][0].get('text')basicMsg+='&'return basicMsg#读取文件
def getTitles(filepath):file_name = filepathtitleList=[]with open(file_name,"r", encoding='UTF-8') as file_obj:for content in file_obj:titleList.append(content)return titleListif __name__ == '__main__':filepath='./keyword.txt'date = datetime.datetime.now().strftime('%Y%m%d')keywords=getTitles(filepath)f1 = codecs.open('./baike/keywordMsg_'+date+'.txt', "a", 'utf-8')f2 = codecs.open('./baike/lemmaMsg_'+date+'.txt', "a", 'utf-8')for key_word in keywords:# 获取多义项key_word=key_word.replace("\r","").replace("\n","")time.sleep(2)itemdata=reqItemUrl(url,key_word)if itemdata:lemmaList=paseitem(itemdata)for lemma in lemmaList:# 获取所有多义项信息url2 = 'https://baikeapi.baidu.com/smartapp/appui/wiki/item?lemmaTitle=' + key_word + '&lemmaId=' + lemma.get('lemmaId') + '&page=0'time.sleep(2)lemmaMsg=reqBasicInfoUrl(url2)basicmsg=paseLemmaMsg(lemmaMsg)lemmastr="百度百科"+"|"+key_word+"|"+lemma.get('lemmaDesc')+"|"+lemma.get('lemmaId')+"|"+basicmsg+"|"+url2+"|"+date+ "|" +'\r\n'f2.write(lemmastr)basicmsgStr="百度百科"+"|"+key_word+"|"+lemma.get('lemmaDesc')+"|"+lemma.get('lemmaId')+"|"+basicmsg+"|"+date+ "|" +'\r\n'f1.write(basicmsgStr)else:basicmsgStr = "百度百科" + "|" + key_word + "|||||" + date+ "|" +'\r\n'f1.write(basicmsgStr)
百度百科关键词搜索获取信息相关推荐
- 搜索引擎百度/360/搜狗关键词搜索提交信息
关键词搜索,主要是关键词接口的确定,网上已有大佬为我们搞明白了.我就截图一下 先来代码,再解释 import requestskeyword="Python" kv1 = {'Us ...
- 百度百科即时搜索插件
由于每次浏览网页的时候遇到不懂得词语总是先复制,再打开百度百科粘贴,觉得挺麻烦的,希望划选文字即能展示摘要信息,搜索了一下竟然没有此功能的谷歌插件,遂决定自己动手开发一个,参考了一下https://g ...
- php 百度来路关键词,php获取百度搜索关键词的方法[方法过时了]
本来是想找一段通过js获取百度关键词的方法的,结果找并且测试获取到是可以就是只能获取到英文字符,如果是汉字就会乱码!知道可能是转码的问题,使用之前用过的代码也出现这样的问题!刚好看到php获取搜索关键 ...
- 如何在百度通过关键词搜索自己的网站
1.在百度站长平台添加, 并提交自己的网址. 2.进入百度站长平台,点击链接提交,等待百度收录之后. 3.在百度搜索框中输入 如下图 site后面的是你的域名 然后空格 加你要搜索的关键词,在该域名上 ...
- php爬取百度相关关键词,PHP获取百度关键词排行接口源码
/**百度关键词排行接口 @author 原作者肯定不是Youngxj @time 2018年6月14日 @code 200->正常 */ // 关键词 @$k=$_GET['k'] ? $_G ...
- 分隔百度百科中的名人信息与非名人信息
导入python包 import pandas as pd from pandas import Series, DataFrame 导入非名人数据 notCelebrity=[] for each ...
- 关键词搜索获取商品数据方法
onebound.taobao.item_search 获取key和secret API文档说明 完整返回结果 { "items": { " ...
- 利用Python爬虫从百度百科获取全国所有县区的地理信息
最近因为工作需要,需要从百度百科获得全国近3000个县区的位置.地貌.气候.水文等地理信息.因为自己对爬虫有些兴趣,就尝试用Python爬虫来获得这些数据,也算是自己对爬虫的学习过程吧.因为学习爬 ...
- 为品牌建立百度百科词条
看了这篇文章你也就都清楚了从1999年互联网技术逐渐发展趋势,到现在,我国大数据技术早已发生了改变,影响了大家的生活状态.人工智能技术.5G技术性.大数据技术这些新技术都是在趋向完善,但不会改变的一点 ...
最新文章
- Windows下LATEX排版论文攻略—CTeX、JabRef使用心得
- word菜单删除,小常识,删除word菜单,WORD菜单栏,删除词霸2003菜单,删除adobe菜单
- python是如何登上编程语言排行榜榜首的
- 面向B端算法实时业务支撑的工程实践
- .Net Framework名词定义
- 怎样看出一个初创公司的实力?
- kafka buffer.memory参数入门
- pandas merge应用
- 设计模式之GOF23状态模式
- java后端使用itextPDF生成PDF文件
- 没有U盘怎么重装系统 无U盘重装系统教程
- 电脑设置显示文件扩展名(文件后缀名)
- 如何快速删除某几页的页眉页脚
- ST推出 28nm MCU ,NXP更狠,推出16nm MCU
- 滑动窗口(最大最小值)的经典例题
- 计算机关闭远程桌面,windows 远程桌面关闭 运行程序退出
- QGIS二次开发:加载XYZ Tiles形式的瓦片地图
- 内存数据库应用之NBA篮球图文直播室存储设计(Redis版)
- 基于jsp(java)财务管理系统的设计和开发
- android圆角功能,非常好用,可以用在图片,视频,gif等上面
热门文章
- 腾讯云服务器申请SSL证书, 配置Nginx, 实现HTTPS
- 计算机二级Word第四套
- 在Windows操作系统中安装MySQL8教程(一)(二)(阁瑞钛伦特软件—九耶实训)
- 非抢占模式下故障后优先级降低却不切换问题--使用Keepalived实现非抢占模式主备切换
- 脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?
- 第二届 IstioCon 演讲议题正在征集中
- 关于ATM渗透与欺诈的知识点Part 1
- 畅玩三子棋(可选择棋盘大小)
- ESP32的MQTT AT固件烧录+STM32以ESP32的MQTT AT固件的AT指令连接EMQX下mqtt服务器实现消息订阅和发布
- Bias-Variance Tradeoff(方差、偏差、误差)通俗理解