本实例为通过对百度百科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)

百度百科关键词搜索获取信息相关推荐

  1. 搜索引擎百度/360/搜狗关键词搜索提交信息

    关键词搜索,主要是关键词接口的确定,网上已有大佬为我们搞明白了.我就截图一下 先来代码,再解释 import requestskeyword="Python" kv1 = {'Us ...

  2. 百度百科即时搜索插件

    由于每次浏览网页的时候遇到不懂得词语总是先复制,再打开百度百科粘贴,觉得挺麻烦的,希望划选文字即能展示摘要信息,搜索了一下竟然没有此功能的谷歌插件,遂决定自己动手开发一个,参考了一下https://g ...

  3. php 百度来路关键词,php获取百度搜索关键词的方法[方法过时了]

    本来是想找一段通过js获取百度关键词的方法的,结果找并且测试获取到是可以就是只能获取到英文字符,如果是汉字就会乱码!知道可能是转码的问题,使用之前用过的代码也出现这样的问题!刚好看到php获取搜索关键 ...

  4. 如何在百度通过关键词搜索自己的网站

    1.在百度站长平台添加, 并提交自己的网址. 2.进入百度站长平台,点击链接提交,等待百度收录之后. 3.在百度搜索框中输入 如下图 site后面的是你的域名 然后空格 加你要搜索的关键词,在该域名上 ...

  5. php爬取百度相关关键词,PHP获取百度关键词排行接口源码

    /**百度关键词排行接口 @author 原作者肯定不是Youngxj @time 2018年6月14日 @code 200->正常 */ // 关键词 @$k=$_GET['k'] ? $_G ...

  6. 分隔百度百科中的名人信息与非名人信息

    导入python包 import pandas as pd from pandas import Series, DataFrame 导入非名人数据 notCelebrity=[] for each ...

  7. 关键词搜索获取商品数据方法

    onebound.taobao.item_search     获取key和secret API文档说明 完整返回结果 {     "items": {         " ...

  8. 利用Python爬虫从百度百科获取全国所有县区的地理信息

      最近因为工作需要,需要从百度百科获得全国近3000个县区的位置.地貌.气候.水文等地理信息.因为自己对爬虫有些兴趣,就尝试用Python爬虫来获得这些数据,也算是自己对爬虫的学习过程吧.因为学习爬 ...

  9. 为品牌建立百度百科词条

    看了这篇文章你也就都清楚了从1999年互联网技术逐渐发展趋势,到现在,我国大数据技术早已发生了改变,影响了大家的生活状态.人工智能技术.5G技术性.大数据技术这些新技术都是在趋向完善,但不会改变的一点 ...

最新文章

  1. Windows下LATEX排版论文攻略—CTeX、JabRef使用心得
  2. word菜单删除,小常识,删除word菜单,WORD菜单栏,删除词霸2003菜单,删除adobe菜单
  3. python是如何登上编程语言排行榜榜首的
  4. 面向B端算法实时业务支撑的工程实践
  5. .Net Framework名词定义
  6. 怎样看出一个初创公司的实力?
  7. kafka buffer.memory参数入门
  8. pandas merge应用
  9. 设计模式之GOF23状态模式
  10. java后端使用itextPDF生成PDF文件
  11. 没有U盘怎么重装系统 无U盘重装系统教程
  12. 电脑设置显示文件扩展名(文件后缀名)
  13. 如何快速删除某几页的页眉页脚
  14. ST推出 28nm MCU ,NXP更狠,推出16nm MCU
  15. 滑动窗口(最大最小值)的经典例题
  16. 计算机关闭远程桌面,windows 远程桌面关闭 运行程序退出
  17. QGIS二次开发:加载XYZ Tiles形式的瓦片地图
  18. 内存数据库应用之NBA篮球图文直播室存储设计(Redis版)
  19. 基于jsp(java)财务管理系统的设计和开发
  20. android圆角功能,非常好用,可以用在图片,视频,gif等上面

热门文章

  1. 腾讯云服务器申请SSL证书, 配置Nginx, 实现HTTPS
  2. 计算机二级Word第四套
  3. 在Windows操作系统中安装MySQL8教程(一)(二)(阁瑞钛伦特软件—九耶实训)
  4. 非抢占模式下故障后优先级降低却不切换问题--使用Keepalived实现非抢占模式主备切换
  5. 脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?
  6. 第二届 IstioCon 演讲议题正在征集中
  7. 关于ATM渗透与欺诈的知识点Part 1
  8. 畅玩三子棋(可选择棋盘大小)
  9. ESP32的MQTT AT固件烧录+STM32以ESP32的MQTT AT固件的AT指令连接EMQX下mqtt服务器实现消息订阅和发布
  10. Bias-Variance Tradeoff(方差、偏差、误差)通俗理解