登录 | 地图 欢迎访问【UZ导航】
当前位置:网站首页 > 推荐 > Admin > 正文

这份seo数据分析技巧你值得拥有

admin 2021-04-29 50 浏览 0 评论

今天为什么会投这篇稿,是感觉seo这个行业现在大家很难像一些技术行业java、php等能够互相分享自己的研究成果或者说叫经验吧。可能是因为大家觉得别人会了,会影响到自己,但其实我个人觉得并不是这样,也希望这个圈子能够有一些改变(虽然我并不是只做seo,但这块确实一直是兴趣之一)。


好了废话不多说,接下来就给大家分享下,针对网站,在搜索引擎抓取这个环节,我们通过蜘蛛日志的分析,能够得到怎样的优化思路!


首先,需要拿到一份搜索引擎的抓取日志,怎么拿就不说了,大家应该都会。拿到抓取日志后,我们主要从两个方面来进行分析:


一、搜索引擎在各个时间段的抓取频次;


二、搜索引擎对于网站各级目录的抓取频次。当然还有其他的维度也是需要注意分析观察的,比如抓取一次所需时间长短,只是这个在站长平台上也有比较好的显示出来了,故这里不做进一步分析了。


一、搜索引擎在各个时间段的抓取频次

针对搜索引擎抓取日志,首先我们需要把不同的搜索引擎分别单独提取出来,来进行逐个分析,以下以百度为例。


根据log文件中的‘Baiduspider’这个字段,我们利用python写一段简单的脚本即可把百度抓取日志部分抽离出来,代码如下:


with open ('1.log',mode='r',encoding='utf-8') as f:


f_list = f.readlines()


baidurizhitiqu = open('baidu.log',mode='w',encoding='utf-8')


for baidurizhi in f_list:


baiduzhuaqu = baidurizhi.strip()


if 'Baiduspider' in baiduzhuaqu:


baidurizhitiqu.write(baiduzhuaqu + '\n')


else:


pass


baidurizhitiqu.close()


这样我们就能拿到单独的百度蜘蛛抓取日志“baidu.log”了,接下来,还有一个重要的操作需要做,一般的日志文件中,抓取时间都是以这种形式来显示:[27/Apr/2021:14:08:34 +0800],


但我们需要的时间只是14:08:34这一块,所以我们需要把其他的地方去除掉,这个使用txt文档的替换操作即可(替换为空,实在不会操作也可以联系我),然后我们就可以得到单纯的蜘蛛抓取时间了。


这种时间形式,人是很好理解,一看就懂,但是程序或者代码很难比较啊,所以笔者想了下还是得转化成小数来比较,这里就是把‘:’全部替换成“.”,并且去掉最后的秒数只保留到分(足够分析用了,没必要分析到秒),最终得到这样的小数形式来代表抓取时间:14.08,即下午2点08分。蜘蛛日志也就变成下面的截图的形式:

1.jpg


接下来,我们只需要用python对日志文件进行一顿操作,即可得到我们想要的数据,代码如下:


dict_zhuaqutime = {


'0-1':'0',


'1-2':'0',


'2-3':'0',


'3-4':'0',


'4-5':'0',


'5-6':'0',


'6-7':'0',


'7-8':'0',


'8-9':'0',


'9-10':'0',


'10-11':'0',


'11-12':'0',


'12-13':'0',


'13-14':'0',


'14-15':'0',


'15-16':'0',


'16-17':'0',


'17-18':'0',


'18-19':'0',


'19-20':'0',


'20-21':'0',


'21-22':'0',


'22-23':'0',


'23-24':'0',


}


with open ('baidu1.log',mode='r',encoding='utf-8') as f:


for baidulog in f:


baidulog_list = baidulog.split()


time = float(baidulog_list[1])


if time >=0 and time <=1:


dict_zhuaqutime['0-1'] =int(dict_zhuaqutime['0-1']) + 1


elif time >1 and time <=2:


dict_zhuaqutime['1-2'] =int(dict_zhuaqutime['1-2']) + 1


elif time >2 and time <=3:


dict_zhuaqutime['2-3'] =int(dict_zhuaqutime['2-3']) + 1


elif time >3 and time <=4:


dict_zhuaqutime['3-4'] =int(dict_zhuaqutime['3-4']) + 1


elif time >4 and time <=5:


dict_zhuaqutime['4-5'] =int(dict_zhuaqutime['4-5']) + 1


elif time >5 and time <=6:


dict_zhuaqutime['5-6'] =int(dict_zhuaqutime['5-6']) + 1


elif time >6 and time <=7:


dict_zhuaqutime['6-7'] =int(dict_zhuaqutime['6-7']) + 1


elif time >7 and time <=8:


dict_zhuaqutime['7-8'] =int(dict_zhuaqutime['7-8']) + 1


elif time >8 and time <=9:


dict_zhuaqutime['8-9'] =int(dict_zhuaqutime['8-9']) + 1


elif time >9 and time <=10:


dict_zhuaqutime['9-10'] =int(dict_zhuaqutime['9-10']) + 1


elif time >10 and time <=11:


dict_zhuaqutime['10-11'] =int(dict_zhuaqutime['10-11']) + 1


elif time >11 and time <=12:


dict_zhuaqutime['11-12'] =int(dict_zhuaqutime['11-12']) + 1


elif time >12 and time <=13:


dict_zhuaqutime['12-13'] =int(dict_zhuaqutime['12-13']) + 1


elif time >13 and time <=14:


dict_zhuaqutime['13-14'] =int(dict_zhuaqutime['13-14']) + 1


elif time >14 and time <=15:


dict_zhuaqutime['14-15'] =int(dict_zhuaqutime['14-15']) + 1


elif time >15 and time <=16:


dict_zhuaqutime['15-16'] =int(dict_zhuaqutime['15-16']) + 1


elif time >16 and time <=17:


dict_zhuaqutime['16-17'] =int(dict_zhuaqutime['16-17']) + 1


elif time >17 and time <=18:


dict_zhuaqutime['17-18'] =int(dict_zhuaqutime['17-18']) + 1


elif time >18 and time <=19:


dict_zhuaqutime['18-19'] =int(dict_zhuaqutime['18-19']) + 1


elif time >19 and time <=20:


dict_zhuaqutime['19-20'] =int(dict_zhuaqutime['19-20']) + 1


elif time >20 and time <=21:


dict_zhuaqutime['20-21'] =int(dict_zhuaqutime['20-21']) + 1


elif time >21 and time <=22:


dict_zhuaqutime['21-22'] =int(dict_zhuaqutime['21-22']) + 1


elif time >22 and time <=23:


dict_zhuaqutime['22-23'] =int(dict_zhuaqutime['22-23']) + 1


elif time >23 and time <=24:


dict_zhuaqutime['23-24'] =int(dict_zhuaqutime['23-24']) + 1


for key in dict_zhuaqutime:


print(str(key)+':'+str(dict_zhuaqutime[key]))


最终分析结果如下:

2.jpg


是不是还不够直观?Wps直接生成了柱形图就可以了,如下:

3.jpg


二、百度蜘蛛抓取网站各级目录情况

这个处理起来就不用像之前的时间段抓取频次那样了,写好python一顿撸,即可。代码如下:


import csv


# 新建蜘蛛字典


def make_spider(spider_name):


save_file = open('%s.csv' % spider_name, 'w', encoding='utf-8') # w模式会将\n写入进去,结果文件中会自动多一行


csvwriter = csv.writer(save_file) # 将save_file写入到csvwriter中


spider_name = {}


spider_name['visits'] = 0


spider_name['visit_spiders'] = {}


spider_name['visit_pages'] = {}


spider_name['visit_dirs'] = {}


spider_name['visit_error'] = {}


return spider_name,csvwriter,save_file


# 日志处理函数。蜘蛛字典spider_dict,方便传入蜘蛛参数


def log_process(spider_dict):


spider_dict['visits'] += 1 # 百度蜘蛛访问次数+1


item = line.split() # split方法默认用空格来做切分


# 获取蜘蛛IP及其访问次数


spider = item[0] # 将蜘蛛IP提取出来


if spider_dict['visit_spiders'].get(spider):


spider_dict['visit_spiders'][spider] += 1 # 如果此IP在字典内,则对此蜘蛛访问次数值加1


else:


spider_dict['visit_spiders'][spider] = 1 # 如果IP不存在,则将此新IP创建到字典里


# 获取蜘蛛访问url及其次数


url = item[4]


if spider_dict['visit_pages'].get(url): # 判断url是否在字典内


spider_dict['visit_pages'][url] += 1


else:


spider_dict['visit_pages'][url] = 1


# 获取蜘蛛访问目录及其次数


if url == '/': # 判断url是否为根目录


dirname = '/'


elif url.count('/') >= 2: # 判断url是否有二级目录


# 获取所有目录


dirname = '/%s/' % '/'.join(url.split('/')[1: -1])


# 获取一级目录使用:'/%s/' % url.split('/')[1]


else:


dirname = '' # 空字符串为False


if dirname and spider_dict['visit_dirs'].get(dirname): # 同时满足目录存在和字典中有此目录


spider_dict['visit_dirs'][dirname] += 1


elif dirname:


spider_dict['visit_dirs'][dirname] = 1


# 获取蜘蛛访问状态及其次数


error_code = item[5]


if error_code == '404':


if spider_dict['visit_error'].get(url):


spider_dict['visit_error'][url] += 1


else:


spider_dict['visit_error'][url] = 1


# 排序和保存文件函数


def count_and_save(spider_dict,writer):


# 对统计结果的字典进行排序


sort_spider = sorted(spider_dict['visit_spiders'].items(), key=lambda x: x[1], reverse=True) #变成数组了-list


sort_pages = sorted(spider_dict['visit_pages'].items(), key=lambda x: x[1], reverse=True)


sort_dirs = sorted(spider_dict['visit_dirs'].items(), key=lambda x: x[1], reverse=True)


sort_error = sorted(spider_dict['visit_error'].items(), key=lambda x: x[1], reverse=True)


# 将结果写入文件


fields = ('总访问量', '蜘蛛IP', 'IP访问次数', '受访目录','目录受访次数',


'受访页面', '页面访问次数', '404页面', '出错次数')


writer.writerow(fields) # 将fields的每个元素作为每一列


row_list = ['' for _ in range(9)] # 单独的下划线表示一个占位变量,不需要用到它


for page_item in sort_pages:


row_list[0] = spider_dict['visits'] if sort_pages.index(page_item) == 0 else '' # 如果下标为0则返回baidu['visits'],否则返回空


ss = sort_spider.pop(0) if sort_spider else ''


row_list[1] = ss[0] if ss else ''


row_list[2] = ss[1] if ss else ''


dd = sort_dirs.pop(0) if sort_dirs else ''


row_list[3] = dd[0] if dd else ''


row_list[4] = dd[1] if dd else ''


row_list[5] = page_item[0]


row_list[6] = page_item[1]


ee = sort_error.pop(0) if sort_error else ''


row_list[7] = ee[0] if ee else ''


row_list[8] = ee[1] if ee else ''


writer.writerow(row_list)


# 百度蜘蛛


baidu,baiducsv,baidufile = make_spider('baidu')


# 搜狗蜘蛛


sogou,sogoucsv,sogoufile = make_spider('sogou')


with open('1.log') as logfile: # 用with方法打开文件可以不用手动关闭文件


print('开始分析日志')


for line in logfile:


if 'Baiduspider' in line:


log_process(baidu)


elif 'Sogou web spider' in line:


log_process(sogou)


count_and_save(baidu,baiducsv)


count_and_save(sogou,sogoucsv)


baidufile.close() # 最后记得关闭文件


sogoufile.close()


print('日志分析结束')


好的,分析出来百度蜘蛛抓取的目录层级情况如下:

4.jpg

饼状图化后统计如下:

5.jpg


最后来说说这些数据对于搜索引擎优化到底有什么指导性的作用:


1. 根据各时间段的抓取频次,分析出你的网站什么时间段,蜘蛛是来的最频繁的(当然这个也是可以培养的),你的网站在更新内容时就在这二个时间段内更新,被抓取到机会也就意味着更大,收录的机会也更大


2. 针对各级网站目录抓取频次,首先我们应该对自己的网站目录了如指掌,比如你需要参与排名和质量度最高的页面肯定是蜘蛛抓取的最频繁的,而你还没有完善页面质量较低或者不需要参与排名的页面,肯定是希望他来抓取的越少越少,这里就要配合robots.txt以及nofollow来进行处理了,合理分配有限的抓取频次,让你高质量页面更多抓取、收录、排名。


当然,以上的应用并不是全部,感觉写的内容有点多了,总之有相关的不清楚的地方都可以与我进行交流,代码的一些问题也可以,这次就分享到这里了。有机会松松博客再见!

相关推荐

跨境电商之google广告投放

由于国内流量的质量度及精准度太差,很多个人甚至企业砸了很多钱却没有一个好的结果。笔者认为国内流量质量度较差和精准度较低的原因是因为各大流量平台什么样的广告都接,什么样的广告都给投放,但是这将严重影响了...

语音识别流程总结
  • 语音识别流程总结
  • 语音识别流程总结
  • 语音识别流程总结
  • 语音识别流程总结
SEO转型系列之一,SEO人员如何转型SEM?
SEO转型系列之一,SEO人员如何转型SEM?

这里写的转型,主要是针对SEO从业者,并不代表说做SEO就没有出路了哈,只是希望多一个技能。如果没有看过我之前那篇文章,你可以再看一下:也许有朋友会说,啥,百度...

3天前 admin

百度的削藩计划

很多站长大大老抱怨现在新站收录难,很多老站长也抱怨现在做排名难,甚至发出“SEO已死”的呼声,但还是有人表示有搜索引擎就有SEO,但什么事情都没有绝对,也或者说有SEO,但作用占比大幅下降到原来的一两...

这份seo数据分析技巧你值得拥有
  • 这份seo数据分析技巧你值得拥有
  • 这份seo数据分析技巧你值得拥有
  • 这份seo数据分析技巧你值得拥有
  • 这份seo数据分析技巧你值得拥有
Google产品评论算法更新

今天无意间刷到猫扑取消用户发帖功能,一瞬间有点恍惚,啊时代的眼泪,老网民的记性太好,也是徒生伤感。随手写一些古早网络印象:Tumblr最早除了黄图和memes,还是复古风emo的秘密花园,是有...

SEO实战,新站上线,网站内容为空好吗?
SEO实战,新站上线,网站内容为空好吗?

在做SEO的过程中,这段时间220与116段的百度蜘蛛是否来访,好像成为了SEO从业者热议的话题,很多SEO从业者都在绞尽脑汁的提高搜索引擎的抓取频率,高概率的...

1周前 (04-27) admin

百度上收录高的平台有哪些?
百度上收录高的平台有哪些?

为什么我们要找百度上收录高的平台?关于这个问题,如果有在甲方公司做推广这块肯定知道为什么,准确需求问题应该是:百度上收录快且排名高的平台有哪些?为什么需要找到呢...

2周前 (04-26) admin

知名链接买卖平台:阿里微微疑似倒闭
知名链接买卖平台:阿里微微疑似倒闭

据一位卢松松粉丝爆料:知名链接买卖平台阿里微微alivv.com好像倒闭了,充的钱花不掉,也退不掉,客服联系不上,买了链接站长也不上链。具体原因未知,但官网还可...

2周前 (04-23) admin

网站降权不收录的原因竟然是,302重定向
网站降权不收录的原因竟然是,302重定向

接了一个客户的整站优化单子,客户的问题是,建站已经两三个月了,现在连首页都没有收录!遂对客户的网站做了全面的seo诊断,并根据诊断结果制定了一套优化方案,目前整...

2周前 (04-21) admin

怎样迁移网站服务器和域名?
怎样迁移网站服务器和域名?

同时迁移服务器和域名比较少见,单独换服务器或域名倒是常见。整个网站范围的改动尽量分步进行首先,不建议同时迁移服务器和域名。整个网站范围所做的变动,尽量不要同时做...

2周前 (04-20) admin

老站长纷纷转型,流量困境下,我们该何去何从?

昨天晚上,收到松哥(卢松松)直播的提醒,我就点进去了,结果从头到尾看了三个小时。内容呢,主要是松哥讲述自己从上班到创业,以及自己做独立博客的一些经历,没记错的话,这应该是他的第八场直播了。也聊了一些自...

网站如何被收录

网站被收录的方法:1、原创文章发到高权重平台。就是所说的外链,如果可以带上链接最好,如果不能带连接可以加上自己的网站名字。2、用网易,新浪等等高权重论坛博客给自己的网站引蜘蛛。3、软文。这是最好用的办...

一个老站长3月视频号直播数据分享:累计带货1.65万
一个老站长3月视频号直播数据分享:累计带货1.65万

从3月9日卢松松开始下定决心做第一场直播到3月30日月末,一共21天的时间里,卢松松累计做了11场微信视频号直播。以下为直播数据分享(全部真实):平均直播时长:...

4周前 (04-07) admin

老牌网站流量统计工具51la发布v6新版本
老牌网站流量统计工具51la发布v6新版本

站长圈老牌免费网站流量统计工具“51la”最近新更新了V6新版本,新增了头条、神马、搜狗、360等搜索关键词统计,实时数据监控,环比分析增长趋势等功能,对于站长...

1个月前 (04-02) admin

取消回复欢迎 发表评论: