设计癖的关键词数据写入csv写了什么案例?

优采云 发布时间: 2021-01-23 08:49

  设计癖的关键词数据写入csv写了什么案例?

  对于seoer来说,注意网站的关键词数据,关键词的排名,流量来源以及对等方的网站数据非常重要,这也是非常必要的要使用seo查询工具,更知名的是爱站网站站长工具,网站站长工具和5118。

  当然,最全面,使用最广泛的是5118!

  在数据和功能方面,5118非常强大!

  如果可能的话,付钱!

  5118的抗爬性还是很好的!

  您需要登录采集。我发现5118已更新一次!

  例如,登录帐户需要经过滑条验证码的防爬限制,并且关键词索引和其他数据以图像加密的形式显示。浮渣和秃头不能被撕裂,我担心。

  但是,某些数据仍然可以用作参考!因此,python已经启动!

  让我们询问设计网站,设计成瘾的情况关键词

  抓取网址:

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

  很多数据都是防攀登限制,这很可惜!

  尽管有用于5118会员登录的滑块验证码,但cookie登录仍然非常易于使用!

  我们通过手动添加Cookie登录采集所需的数据。

  一些要点:

  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和酷客!

  这当然是完整的协议标头,有些可以删除,您可以自己尝试!

  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人工客服


线