python关键词_python与seo,Python批量挖掘百度凤巢关键词

利用python来完成关键词挖掘,获取关键词数据是seo中比较基础的部分,渠道很多,开水以前也有专门的讲解文章搜索需求挖掘,推广词库收集整理。这次我们就其中关键词搜集的一种方式来展开,来采集凤巢的关键词数据,对关键词的分析,以及使用才是重点!

6a2d2afdgy1fsvjynx43hj20n20cswen.jpg

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的内容需要抓包获取对应数据填写即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值