Python批量挖掘百度凤巢关键词

利用python来完成关键词挖掘,获取关键词数据是seo中比较基础的部分,渠道很多。这次我们就其中关键词搜集的一种方式来展开,来采集凤巢的关键词数据,对关键词的分析,以及使用才是重点!
Python批量挖掘百度凤巢关键词

python与seo

为什么要使用python来完成呢,因为如果直接在凤巢后台操作,不可以批量完成,拓展大量的关键词就非常的麻烦;也有人会说到有一系列的软件,软件有一个缺点就是要登录,对我们的账户安全没有保障,在一个就是还得忍受软件提供商的广告,能自己做的就不用别人的。来说说实现Python批量挖掘百度凤巢关键词过程的一些要点。

python登录百度凤巢

百度、新浪等大平台的模拟登录本身难度就比较大,百度凤巢又涉及资金和短信验证,所以模拟登录成本较高。这里我们采用简单的操作方法,利用cookies来完成登录,这样只要在自己的浏览器登录账户,抓一下cookies就可以完成登录了。

凤巢关键词提取

通过抓包发现凤巢的关键词规划师返回的是json数据,使用json模块把返回的json数据可识别,直接[‘word’]提取我们数据就可以了。

python代码

# -*- coding: utf-8 -*- """ verseion: beta2.1 说明: 百度凤巢挖词脚本 (代码符合PEP8标注) 请勿用于任何商业用户,版权最终归作者所有 """ import requests import json import time import sys   reload(sys) sys.setdefaultencoding( "utf-8" ) class UnicodeStreamFilter:    def __init__(self, target):     self.target = target     self.encoding = 'utf-8'     self.errors = 'replace'     self.encode_to = self.target.encoding    def write(self, s):     if type(s) == str:      s = s.decode("utf-8")     s = s.encode(self.encode_to, self.errors).decode(self.encode_to)     self.target.write(s)        if sys.stdout.encoding == 'cp936':    sys.stdout = UnicodeStreamFilter(sys.stdout)    #以上为cmd下utf-8中文输出的终极解决方案! def url_data(key,config,cookie,shibai=3):  headers={    'Accept': '*/*',    'Accept-Encoding': 'gzip, deflate',    'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',    'Connection': 'keep-alive',    'Content-Type': 'application/x-www-form-urlencoded',    'Cookie': cookie,    'Host': 'fengchao.baidu.com',    'Origin': 'http://fengchao.baidu.com',    'Referer': 'http://fengchao.baidu.com/nirvana/main.html?userid=%s' % config['userid'],    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 '    '(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'  }  params={    "logid":401075077,    "query":key,    "querySessions":[key],    "querytype":1,    "regions":"16",    "device":0,    "rgfilter":1,    "entry":"kr_station",    "planid":"0",    "unitid":"0",    "needAutounit":False,    "filterAccountWord":True,    "attrShowReasonTag":[],    "attrBusinessPointTag":[],    "attrWordContainTag":[],    "showWordContain":"",    "showWordNotContain":"",    "pageNo":1,    "pageSize":1000,    "orderBy":"",    "order":"",    "forceReload":True  }  from_data={    'params':json.dumps(params),    'path':'jupiter/GET/kr/word',    'userid':config['userid'],    'token':config['token'],    'eventId':config['eventId'],    'reqid':config['reqid']  }  qurl="http://fengchao.baidu.com/nirvana/request.ajax?path=jupiter/GET/kr/word&reqid=%s"%config['reqid']  try:   whtml=requests.post(qurl,headers=headers,data=from_data)  except requests.exceptions.RequestException:   resultitem={}   erry="请求三次都是错误!"   if shibai > 0:    return url_data(key,config,cookie,shibai-1)  else:   whtml.encoding="utf-8"   try:    resultitem = whtml.json()   except ValueError:    resultitem = {}    erry = "获取不到json数据,可能是被封了吧,谁知道呢?"   else:    erry = None  return resultitem,erry   config={   'userid': ,   'token':' ',   'eventId':' ',   'reqid':' ' } cookie=" " def key_data(resultitem):  kws=['关键词/t日均搜索量/tpc/t移动/t竞争度/n']  try:   resultitem=resultitem['data']['group'][0]['resultitem']  except (KeyError, ValueError, TypeError):   resultitem=[]   erry="没有获取到关键词"  else:   for items in resultitem:    word=items['word']    pv=items['pv']#日均搜索量    pvPc=items['pvPc']    pvWise=items['pvWise']    kwc=items['kwc']#竞争度    kwslist=str(word)+'/t'+str(pv)+'/t'+str(pvPc)+'/t'+str(pvWise)+'/t'+str(kwc)+'/n'    kws.append(str(kwslist))    print word,pv,pvPc,pvWise,kwc   erry=None  return kws,erry     sfile = open('resultkeys.txt', 'w')  # 结果保存文件 faileds = open('faileds.txt', 'w')  # 查询失败保存文件 for key in open("cigeng.txt"):  key=key.strip()  print "正在拓展:%s"%key  resultitem,erry=url_data(key,config,cookie)  if erry:   print key,erry   faileds.write('%s/n' % key)   faileds.flush()   continue  keylist,erry=key_data(resultitem)  if erry:   print key,erry   faileds.write('%s/n' % word)   faileds.flush()   continue  for kw in keylist:   sfile.write('%s/n'%kw)   faileds.flush()   continue

代码中config和cookies的内容需要抓包获取对应数据填写即可。

本文链接:https://www.dnwfb.com/935.html,转载请注明出处。
0

评论0

没有账号? 注册  忘记密码?