名站网址导航为需要网站seoseo的朋友提供seo相关的教程知识。
利用python来完成关键词挖掘,获取关键词数据是seo中比较基础的部分,渠道很多。这次我们就其中关键词搜集的一种方式来展开,来采集凤巢的关键词数据,对关键词的分析,以及使用才是重点!
为什么要使用python来完成呢,因为如果直接在凤巢后台操作,不可以批量完成,拓展大量的关键词就非常的麻烦;也有人会说到有一系列的软件,软件有一个缺点就是要登录,对我们的账户安全没有保障,在一个就是还得忍受软件提供商的广告,能自己做的就不用别人的。来说说实现Python批量挖掘百度凤巢关键词过程的一些要点。
百度、新浪等大平台的模拟登录本身难度就比较大,百度凤巢又涉及资金和短信验证,所以模拟登录成本较高。这里我们采用简单的操作方法,利用cookies来完成登录,这样只要在自己的浏览器登录账户,抓一下cookies就可以完成登录了。
通过抓包发现凤巢的关键词规划师返回的是json数据,使用json模块把返回的json数据可识别,直接[‘word’]提取我们数据就可以了。
# -*- coding: utf-8 -*- """ verseion: beta二.一 说明: 百度凤巢挖词脚本 (代码符合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 == 'cp9三六': sys.stdout = UnicodeStreamFilter(sys.stdout) #以上为cmd下utf-8中文输出的终极解决方案! def url_data(key,config,cookie,shibai=三): headers={ 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.六', '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/五.0 (Macintosh; Intel Mac OS X 一0_一一_六) AppleWebKit/五三七.三六 ' '(KhTML, like Gecko) Chrome/五六.0.二9二四.8七 Safari/五三七.三六' } params={ "logid":四0一0七五0七七, "query":key, "querySessions":[key], "querytype":一, "regions":"一六", "device":0, "rgfilter":一, "entry":"kr_station", "planid":"0", "unitid":"0", "needAutounit":False, "filterAccountWord":True, "attrShowReasonTag":[], "attrBusinessPointTag":[], "attrWordContainTag":[], "showWordContain":"", "showWordNotContain":"", "pageNo":一, "pageSize":一000, "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-一) 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的内容需要抓包获取对应数据填写即可。
关于网站seoseo的朋友提供seo相关的教程知识就说到这里,希望可以帮到大家。,网站seo接入熊掌号,网页配置并提交
百度熊掌号是站长、自媒体、开发者、商家等各种内容和服务提供者入驻百度的身份账号,该账号可实现包括百度搜索资源平台、百度数据开放平台、百家号自媒体平台、用户运营平台等各类平台的能力互通。开通熊掌号之后站点自然也就有了原创提交权限,同时也有抓取优待以及建库保护,结构化数据的优待。