关键词采集器(查询一个设计网站的关键词数据是非常有必要的!)

优采云 发布时间: 2021-12-01 06:13

  关键词采集器(查询一个设计网站的关键词数据是非常有必要的!)

  对于seoer来说,关注网站的关键词数据是很重要的。关键词排名、流量来源、peer网站数据,那么使用seo查询工具也是非常有必要的。比较知名的有爱站站长工具、站长工具和5118。

  当然,现在比较全面、应用比较广泛的就是5118了!

  从数据上,还有功能上,5118都非常强大!

  如果可能,请付费!

  5118的防爬还是很不错的!

  需要登录采集,我发现5118已经更新一次了!

  比如登录账号需要通过滑块验证码的防爬限制,关键词索引等数据以图片加密的形式展示。.

  不过有些数据还是可以参考的!所以,python 起来了!

  打听一个设计网站,设计成瘾的情况关键词

  抓取网址:

  如果您不是付费会员,则只能查看前100页数据!

  很多数据被反爬限制了,可惜了!

  虽然有5118会员登录的滑块验证码,但是cookies登录还是非常好用的!

  我们手动添加cookies来登录需要的数据采集。

  几个关键点:

  1.添加协议头:

  headers={

'Accept': 'application/json, text/javascript, */*; q=0.01',

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

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

'Connection': 'keep-alive',

'Content-Length': '0',

'Cookie': Cookies,

'Host': 'www.5118.com',

'Origin': 'https://www.5118.com',

'Referer': 'https://www.5118.com/',

'User-Agent': ua,

'X-Requested-With': 'XMLHttpRequest',

}

  自己添加ua和cooikes!

  当然这是一个完整的协议头,有的可以删掉,大家可以自己试试!

  2.zip函数的使用和格式化数据的处理之前也有分享过!

  for keyword,rank,title,link,index_link in zip(keywords,ranks,titles,links,index_links):

data=[

keyword,

rank.xpath('string(.)').strip().replace(' ','').replace('\r\n','-'),

self.get_change(rank),

title,

unquote(link.split('target=')[-1]),

'https:{}'.format(index_link),

]

print(data)

  3. 处理排名波动的情况

  从源码查询可以看出,绿色表示排名上升,红色表示排名下降。这里有一个判断来获取!

  #判断排名是否提升

def get_change(self,rank):

rank=etree.tostring(rank).decode('utf-8')

if "red" in str(rank):

change="下降"

elif "green" in str(rank):

change = "提升"

else:

change = "不变"

return change

  4.关键词写入数据到csv

  写了一个案例,找到了两个参考案例

  import csv

#关键词数据写入csv

def write_keywords(self):

path='{}_keywords.csv'.format(self.file_name)

csvfile = open(path, 'a+')

for keyword in self.keyword_datas:

csvfile.write('%s\n' % keyword)

print("5118关键词搜索数据写入csv成功!")

#参考一

def write_csv(self):

path = "aa.csv"

with open(path, 'a+') as f:

csv_write = csv.writer(f)

data_row = ["1", "2"]

csv_write.writerow(data_row)

# 参考二

def wcsv(self):

csvfile = open('csvtest.csv', 'w')

writer = csv.writer(csvfile)

writer.writerow(['keywords'])

data = [

('1', 'http://www.xiaoheiseo.com/', '小黑'),

('2', 'http://www.baidu.com/', '百度'),

('3', 'http://www.jd.com/', '京东')

]

writer.writerows(data)

csvfile.close()

  5.查询网站相关关键词数据写入excel表

  使用第三方库 xlsxwriter

  #数据写入excle表格

def write_to_xlsx(self):

workbook = xlsxwriter.Workbook('{}_search_results.xlsx'.format(self.file_name)) # 创建一个Excel文件

worksheet = workbook.add_worksheet(self.file_name)

title = ['关键词', '排名', '排名波动', '网页标题', '网页链接', '长尾词链接'] # 表格title

worksheet.write_row('A1', title)

for index, data in enumerate(self.data_lists):

num0 = str(index + 2)

row = 'A' + num0

worksheet.write_row(row, data)

workbook.close()

print("5118搜索数据写入excel成功!")

  由于页码也是js生成的,没找到,所以自己输入页码!

  输入查询网站 URL格式:主域名用于爬取后的数据存储文件!

  附上完整代码:

  #5118网站关键词数据获取

import requests

from lxml import etree

from urllib.parse import unquote

import xlsxwriter

import time

import csv

class C5118(object):

def __init__(self,url,nums):

self.keyword_datas=[]

self.data_lists=[]

self.index_links_hrefs=[]

self.headers={

'Accept': 'application/json, text/javascript, */*; q=0.01',

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

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

'Connection': 'keep-alive',

'Content-Length': '0',

'Cookie': Cookies,

'Host': 'www.5118.com',

'Origin': 'https://www.5118.com',

'Referer': 'https://www.5118.com/',

'User-Agent': UA,

'X-Requested-With': 'XMLHttpRequest',

}

self.post_url=url

self.file_name=url.split('.')[1]

self.pagenums=nums

#判断排名是否提升

def get_change(self,rank):

rank=etree.tostring(rank).decode('utf-8')

if "red" in str(rank):

change="下降"

elif "green" in str(rank):

change = "提升"

else:

change = "不变"

return change

#获取数据

def get_data(self,pagenum):

url="https://www.5118.com/seo/baidupc"

params={

'isPager': 'true',

'viewtype': '2',

'days': '90',

'url': self.post_url,

'orderField': 'Rank',

'orderDirection': 'asc',

'pageIndex': pagenum, #页码

'catalogName': '',

}

response=requests.post(url,params=params,headers=self.headers)

time.sleep(1)

print(response.status_code)

doc=etree.HTML(response.content.decode('utf-8'))

keywords= doc.xpath('//tr[@class="list-row"]/td[1]/a/text()') #关键词

print(keywords)

self.keyword_datas.extend(keywords)

ranks = doc.xpath('//tr[@class="list-row"]/td[2]/a') #排名

titles = doc.xpath('//tr[@class="list-row"]/td[5]/a/text()') #网页标题

links=doc.xpath('//tr[@class="list-row"]/td[5]/a/@href') #网页链接

index_links=doc.xpath('//tr[@class="list-row"]/td[7]/a/@href') #长尾词数量链接

self.index_links_hrefs.extend(index_links)

for keyword,rank,title,link,index_link in zip(keywords,ranks,titles,links,index_links):

data=[

keyword,

rank.xpath('string(.)').strip().replace(' ','').replace('\r\n','-'),

self.get_change(rank),

title,

unquote(link.split('target=')[-1]),

'https:{}'.format(index_link),

]

print(data)

self.data_lists.append(data)

time.sleep(4)

return self.data_lists

#关键词数据写入csv

def write_keywords(self):

path='{}_keywords.csv'.format(self.file_name)

csvfile = open(path, 'a+')

for keyword in self.keyword_datas:

csvfile.write('%s\n' % keyword)

print("5118关键词搜索数据写入csv成功!")

#数据写入excle表格

def write_to_xlsx(self):

workbook = xlsxwriter.Workbook('{}_search_results.xlsx'.format(self.file_name)) # 创建一个Excel文件

worksheet = workbook.add_worksheet(self.file_name)

title = ['关键词', '排名', '排名波动', '网页标题', '网页链接', '长尾词链接'] # 表格title

worksheet.write_row('A1', title)

for index, data in enumerate(self.data_lists):

num0 = str(index + 2)

row = 'A' + num0

worksheet.write_row(row, data)

workbook.close()

print("5118搜索数据写入excel成功!")

def main(self):

for i in range(1,self.pagenums+1):

print(f'>>> 正在采集第{i}页关键词数据...')

self.get_data(i)

print("数据采集完成!")

self.write_keywords()

self.write_to_xlsx()

if __name__=="__main__":

url = "www.shejipi.com"

nums=100

spider=C5118(url,nums)

spider.main()

  采集效果:

  设计成瘾网站关键词 相关资料:shejipi_search_results..xlsx

  设计成瘾网站关键词资料:shejipi_keywords.csv

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线