建站资讯

免费试用
您的位置: 首页 > AI建站 > 建站资讯

seo一份蜘蛛日志数据分析秘诀,你值得拥有!

今天为什么会投这篇稿,也是自己刚刚入曾老师SEO交流群的初衷之一吧,记得当初我入群时说的第一句话就是,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:passbaidurizhitiqu.close()

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

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

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

接下来,我们只需要用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'])+1elif time>1 and time<=2:dict_zhuaqutime['1-2']=int(dict_zhuaqutime['1-2'])+1elif time>2 and time<=3:dict_zhuaqutime['2-3']=int(dict_zhuaqutime['2-3'])+1elif time>3 and time<=4:dict_zhuaqutime['3-4']=int(dict_zhuaqutime['3-4'])+1elif time>4 and time<=5:dict_zhuaqutime['4-5']=int(dict_zhuaqutime['4-5'])+1elif time>5 and time<=6:dict_zhuaqutime['5-6']=int(dict_zhuaqutime['5-6'])+1elif time>6 and time<=7:dict_zhuaqutime['6-7']=int(dict_zhuaqutime['6-7'])+1elif time>7 and time<=8:dict_zhuaqutime['7-8']=int(dict_zhuaqutime['7-8'])+1elif time>8 and time<=9:dict_zhuaqutime['8-9']=int(dict_zhuaqutime['8-9'])+1elif time>9 and time<=10:dict_zhuaqutime['9-10']=int(dict_zhuaqutime['9-10'])+1elif time>10 and time<=11:dict_zhuaqutime['10-11']=int(dict_zhuaqutime['10-11'])+1elif time>11 and time<=12:dict_zhuaqutime['11-12']=int(dict_zhuaqutime['11-12'])+1elif time>12 and time<=13:dict_zhuaqutime['12-13']=int(dict_zhuaqutime['12-13'])+1elif time>13 and time<=14:dict_zhuaqutime['13-14']=int(dict_zhuaqutime['13-14'])+1elif time>14 and time<=15:dict_zhuaqutime['14-15']=int(dict_zhuaqutime['14-15'])+1elif time>15 and time<=16:dict_zhuaqutime['15-16']=int(dict_zhuaqutime['15-16'])+1elif time>16 and time<=17:dict_zhuaqutime['16-17']=int(dict_zhuaqutime['16-17'])+1elif time>17 and time<=18:dict_zhuaqutime['17-18']=int(dict_zhuaqutime['17-18'])+1elif time>18 and time<=19:dict_zhuaqutime['18-19']=int(dict_zhuaqutime['18-19'])+1elif time>19 and time<=20:dict_zhuaqutime['19-20']=int(dict_zhuaqutime['19-20'])+1elif time>20 and time<=21:dict_zhuaqutime['20-21']=int(dict_zhuaqutime['20-21'])+1elif time>21 and time<=22:dict_zhuaqutime['21-22']=int(dict_zhuaqutime['21-22'])+1elif time>22 and time<=23:dict_zhuaqutime['22-23']=int(dict_zhuaqutime['22-23'])+1elif time>23 and time<=24:dict_zhuaqutime['23-24']=int(dict_zhuaqutime['23-24'])+1for key in dict_zhuaqutime:print(str(key)+':'+str(dict_zhuaqutime[key]))

最终分析结果如下:

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

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

这个处理起来就不用像之前的时间段抓取频次那样了,写好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']=0spider_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#百度蜘蛛访问次数+1item=line.split()#split方法默认用空格来做切分#获取蜘蛛IP及其访问次数spider=item[0]#将蜘蛛IP提取出来if spider_dict['visit_spiders'].get(spider):spider_dict['visit_spiders'][spider]+=1#如果此IP在字典内,则对此蜘蛛访问次数值加1else: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]+=1else: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=''#空字符串为Falseif dirname and spider_dict['visit_dirs'].get(dirname):#同时满足目录存在和字典中有此目录spider_dict['visit_dirs'][dirname]+=1elif 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]+=1else: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)#变成数组了-listsort_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('日志分析结束')

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

饼状图统计如下:

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

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

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

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


原文作者:平哥SEO优化

来源:微信公众号


上一篇:线上营销是把双刃剑,企业SEO网络推广需要趋利避害
下一篇:tag标签是什么意思?一个网站可以有多少tag标签呢?
15分钟在线开通试用:网易外贸通服务,送京东购物卡,来电咨询享额外优惠    
立即体验

海量外贸大数据

50亿+海关数据,1.2亿全球企业信息

全触点营销获客方案

超高触达率邮件营销,全链路外贸获客沉 淀管理解决方案

专业企业服务

年深厚企业服务经验,一对一专家服务

电话咨询:4006-138-163

购买咨询

在线客服

电话咨询

致电专属客服
咨询邮箱解决方案

4006-138-163

电话咨询

微信扫一扫
在线开通企业域名后缀邮箱

微信咨询

微信咨询

申请试用

申请试用

返回顶部