seo一份蜘蛛日志数据分析秘诀,你值得拥有!
今天为什么会投这篇稿,也是自己刚刚入曾老师交流群的初衷之一吧,记得当初我入群时说的第一句话就是,seo这个行业现在大家很难像一些技术行业java、php等能够互相分享自己的研究成果或者说叫经验吧。可能是因为大家觉得别人会了,会影响到自己,但其实我个人觉得并不是这样,也希望这个圈子能够有一些改变(虽然我并不是只做seo,但这块确实一直是兴趣之一)。
好了废话不多说,接下来就给大家分享下,针对网站,在抓取这个环节,我们通过蜘蛛日志的分析,能够得到怎样的优化思路!
,需要拿到一份搜擎的抓取日志,怎么拿就不说了,大家应该都会。拿到抓取日志后,我们主要从两个方面来进行分析一、搜索引擎在各个时间段的抓取频次;二、搜索引擎对于网站各级目录的抓取频次。还有其他的维度也是需要注意分析观察的,比如抓取一次所需时间长短,只是这个在站长平台上也有比较好的显示出来了,故这里不做进一步分析了。
一、搜索引擎在各个时间段的抓取频次
针对搜索引擎抓取日志,我们需要把不同的搜索引擎分别单独提取出来,来进行逐个分析,推火网以下以百度为例。
根据log文件中的‘Baiduspider’这个字段,我们利用python写一段简单的脚本即可把百度抓取日志部分抽离出来,代码如下
with open('1.log',mode='r',encodg='utf-8')as f: f_list=f.readles() baidurizhitiqu=open('baidu.log',mode='w',encodg='utf-8') for baidurizhi f_list: baiduzhuaqu=baidurizhi.strip() if'Baiduspider' 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分。蜘蛛日志也就变成下面的截图的形式
接下来,我们只需要用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',encodg='utf-8')as f: for baidulog f: baidulog_list=baidulog.split() time=float(baidulog_list[1]) if time>=0 and time<=1: dict_zhuaqutime['0-1']=t(dict_zhuaqutime['0-1'])+1 elif time>1 and time<=2: dict_zhuaqutime['1-2']=t(dict_zhuaqutime['1-2'])+1 elif time>2 and time<=3: dict_zhuaqutime['2-3']=t(dict_zhuaqutime['2-3'])+1 elif time>3 and time<=4: dict_zhuaqutime['3-4']=t(dict_zhuaqutime['3-4'])+1 elif time>4 and time<=5: dict_zhuaqutime['4-5']=t(dict_zhuaqutime['4-5'])+1 elif time>5 and time<=6: dict_zhuaqutime['5-6']=t(dict_zhuaqutime['5-6'])+1 elif time>6 and time<=7: dict_zhuaqutime['6-7']=t(dict_zhuaqutime['6-7'])+1 elif time>7 and time<=8: dict_zhuaqutime['7-8']=t(dict_zhuaqutime['7-8'])+1 elif time>8 and time<=9: dict_zhuaqutime['8-9']=t(dict_zhuaqutime['8-9'])+1 elif time>9 and time<=10: dict_zhuaqutime['9-10']=t(dict_zhuaqutime['9-10'])+1 elif time>10 and time<=11: dict_zhuaqutime['10-11']=t(dict_zhuaqutime['10-11'])+1 elif time>11 and time<=12: dict_zhuaqutime['11-12']=t(dict_zhuaqutime['11-12'])+1 elif time>12 and time<=13: dict_zhuaqutime['12-13']=t(dict_zhuaqutime['12-13'])+1 elif time>13 and time<=14: dict_zhuaqutime['13-14']=t(dict_zhuaqutime['13-14'])+1 elif time>14 and time<=15: dict_zhuaqutime['14-15']=t(dict_zhuaqutime['14-15'])+1 elif time>15 and time<=16: dict_zhuaqutime['15-16']=t(dict_zhuaqutime['15-16'])+1 elif time>16 and time<=17: dict_zhuaqutime['16-17']=t(dict_zhuaqutime['16-17'])+1 elif time>17 and time<=18: dict_zhuaqutime['17-18']=t(dict_zhuaqutime['17-18'])+1 elif time>18 and time<=19: dict_zhuaqutime['18-19']=t(dict_zhuaqutime['18-19'])+1 elif time>19 and time<=20: dict_zhuaqutime['19-20']=t(dict_zhuaqutime['19-20'])+1 elif time>20 and time<=21: dict_zhuaqutime['20-21']=t(dict_zhuaqutime['20-21'])+1 elif time>21 and time<=22: dict_zhuaqutime['21-22']=t(dict_zhuaqutime['21-22'])+1 elif time>22 and time<=23: dict_zhuaqutime['22-23']=t(dict_zhuaqutime['22-23'])+1 elif time>23 and time<=24: dict_zhuaqutime['23-24']=t(dict_zhuaqutime['23-24'])+1 for key dict_zhuaqutime: prt(str(key)+':'+str(dict_zhuaqutime[key]))
最终分析结果如下
是不是还不够直观?WPS直接生成了柱形图就可以了,如下
二、百度蜘蛛抓取网站各级目录情况
这个处理起来就不用像之前的时间段抓取频次那样了,写好python一顿撸,即可。代码如下
import csv #新建蜘蛛字典 def make_spider(spider_name): save_file=open('%s.csv'%spider_name,'w',encodg='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=le.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/'%'/'.jo(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=='': 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访问次数','受访目录','目录受访次数', '受访页面','页面访问次数','','出错次数') writer.writerow(fields)#将fields的每个元素作为每一列 row_list=[''for _ range(9)]#单独的下划线表示一个占位变量,不需要用到它 for page_item sort_pages: row_list[0]=spider_dict['visits']if sort_pages.dex(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方法打开文件可以不用手动关闭文件 prt('开始分析日志') for le logfile: if'Baiduspider' le: log_process(baidu) elif'Sogou web spider' le: log_process(sogou) count_and_save(baidu,baiducsv) count_and_save(sogou,sogoucsv) baidufile.close()#记得关闭文件 sogoufile.close() prt('日志分析结束')
好的,分析出来百度蜘蛛抓取的目录层级情况如下
饼状图统计如下
来说说这些数据对于搜索引擎优化到底有什么指导性的作用
1.根据各时间段的抓取频次,分析出你的网站什么时间段,蜘蛛是来的最频繁的(这个也是可以培养的),你的网站在更新内容时就在这二个时间段内更新,被抓取到机会也就意味着更大,收录的机会也更大;
2.针对各级网站目录抓取频次,我们应该对自己的网站目录了如指掌,比如你需要参与排名和质量度最高的页面肯定是蜘蛛抓取的最频繁的,而你还没有完善页面质量较低或者不需要参与排名的页面,肯定是希望他来抓取的越少越少,这里就要配合以及来进行处理了,合理分配有限的抓取频次,让你高质量页面更多抓取、收录、排名。
,以上的应用并不是全部,感觉写的内容有点多了,有相关的不清楚的地方都可以与我进行交流,代码的一些问题也可以,这次就分享到这里了。
原文作者平哥
来源微信公众号
网站seo
- 国际顶级域名有哪些 国家顶级域名和国际顶级域
- 关于域名注册你要了解的几点 选择域名不再随意
- 越南服务器租用哪家好
- 奇台百度关键词排名 全面解析与优化策略
- 邯郸网站建设多少钱 全面解析成本与价值
- 域名注册什么技巧 如何选择域名
- 未来域名还有价值吗 会不会被取代呢
- DNS解析之哪些情况要添加A记录与CNAME记录
- 尚志网站建设多少钱 全面解析价格因素与服务
- 红桥建站公司 为您打造完美网站的最佳选择
- .pub域名如何注册 规则是什么
- 搭建跨境电商独立站平台要注意什么
- 弥勒SEO网站推广 提升您网站流量的有效策略
- 怎么买域名自己做网站 有什么方法
- 域名什么理由会仲裁 如何避免域名仲裁
- 浙江网站优化公司的注意事项有哪些