关键词采集(那要如何解决登陆、获取cookie的问题?(图))

优采云 发布时间: 2021-12-07 10:59

  关键词采集(那要如何解决登陆、获取cookie的问题?(图))

  这文章,建议在电脑上观看。整个阅读时间取决于个人理解。需要通过捕获数据包来填写配置和cookie

  百度竞价中的关键词计划者对于搜索引擎优化从业者来说是一个很好的关键词来源

  我如何在这里获取关键词内容

  此代码基于网络上的2.7版本。如果修改为3.*

  (事实上,我刚刚更改了打印,23333)

  同样,这段代码并没有教你如何一步一步地登录和获取cookies。它直接使用登录后的cookies和登录后的from_数据。请注意下面代码顶部的注释,否则它不会运行。不要怪我

  

# -*- coding: utf-8 -*-

#本代码改编自网络上Python2.7版本代码。

#Python版本:3.*,需要安装requests,JSON库不知道要不要重新安装

#使用本代码,首先将代码保存为.py文件,并且在相同目录中新建名字为cigeng的txt文件

#在cigeng.txt文件中输入要采集的关键词,一行一个。保存。

#成功采集后的数据,保存在相同目录中resultkeys.txt文件中。

#如果只要关键词,不要其他黑马等数据,那么就修改key_data函数下else中的数据。

import requests

import json

import time

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,

#在下面config这个变量值下面的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={

#这部分数据和下面的cookie,直接开浏览器抓包就能看到相应数据。复制黏贴到相应位置

'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就可以。

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)

## kws.append(str(word))

## print (word)

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

  以下代码是由浏览器(360速浏览器)捕获的(需要挂梯子)网站格式化的数据没有更改。这便于新手理解。需要导入JSON并用JSON解析代码。但是,请注意JSON中的内容太多。小心idle被卡住

  import requests

cookies = {'这部分有数据的,我删了,自己抓包后就知道'

}

headers = {

'Origin': 'http://fengchao.baidu.com',

'Accept-Encoding': 'gzip, deflate',

'Accept-Language': 'zh-CN,zh;q=0.9',

'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',

'Content-Type': 'application/x-www-form-urlencoded',

'Accept': '*/*',

'Referer': 'http://fengchao.baidu.com/nirvana/main.html?userid=6941153',

'Connection': 'keep-alive',

}

params = (

('path', 'jupiter/GET/kr/word'),

('reqid', '4b534c46-1ea0-4eca-b581-154181423578'),

)

data = {

'userid': '',

'token': '',

'reqid': '',

'path': 'jupiter/GET/kr/word',

'eventId': '',

'params': '{"logid":,"entry":"kr_station","attrWordContainTag":[],"needAutounit":false,"querytype":1,"query":"\u622A\u6B62\u9600","querySessions":["\u622A\u6B62\u9600"],"forceReload":true,"regions":"","device":0,"showWordContain":"","showWordNotContain":"","attrShowReasonTag":[],"attrBusinessPointTag":[],"filterAccountWord":true,"rgfilter":1,"planid":0,"unitid":0,"pageNo":1,"pageSize":300,"order":"","orderBy":""}'

}

response = requests.post('http://fengchao.baidu.com/nirvana/request.ajax', headers=headers, params=params, cookies=cookies, data=data)

  2018年11月13日,有人说,既然我可以去百度,为什么我要登录我的账户,捕获数据包并将数据复制到Python脚本

  …嗯,这是因为我不知道cookies和userid、token和reqid的来源

  所以现在我用了这个傻瓜式方法,但至少比手工好得多

  此外,还提供了几个提示:主要的,如Python,在百度中搜索。底部的相关搜索也是“@ K4@”的一个很好的来源。你可以考虑百度竞价采集@ >曾经@ @ K4@ >,然后编写一个代码搜索< @ K11@ >这些/P>

  此外,百度百科全书右侧的条目标题也与当前搜索相关关键词。这部分标题也可以是专题采集

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线