1. 思齐SEO > SEO优化 > SEO技术

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:
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',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]))

最终分析结果如下:

经过处理后分析出每个时段的蜘蛛抓取情况

是不是还不够直观?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']=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('日志分析结束')

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

分析出来百度蜘蛛抓取的目录层级情况

饼状图统计如下:

分析出来百度蜘蛛抓取的目录层级情况饼状图

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

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

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

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


原文作者:平哥 SEO优化

来源:微信公众号

本文由思齐SEO发布/转载,不代表思齐SEO立场,如有侵权请 联系站长删除或下架处理!

本文链接地址: http://www.seohet.com/seojs/936.html

热门文章

推荐文章

  • pc站与移动网站的几种适配优化设置方法

    pc站与移动网站的几种适配优化设置方法

    2023年03月02日

  • 网站的出站链接对排名有没有帮助?

    网站的出站链接对排名有没有帮助?

    2022年09月26日

  • 企业网站SEO能不能通过长尾词带动核心词排名?

    企业网站SEO能不能通过长尾词带动核心词排名?

    2022年09月26日

  • 现在的外链对网站SEO有用吗(2021年还有没有必要做外链)

    现在的外链对网站SEO有用吗(2021年还有没有必要做外链)

    2021年04月24日

  • 百度冰桶算法的介绍及解读

    百度冰桶算法的介绍及解读

    2020年10月16日

最新内容

  • 抖音SEO怎么做?如何获取高流量?

    抖音SEO怎么做?如何获取高流量?

    2023年07月19日

  • 站外SEO优化是什么意思?

    站外SEO优化是什么意思?

    2023年07月19日

  • 新站为什么不收录?新站快速收录指南

    新站为什么不收录?新站快速收录指南

    2023年07月19日

  • 博客网站SEO优化技术操作细节分享

    博客网站SEO优化技术操作细节分享

    2023年07月19日

  • 怎么给公司的产品做网络推广?

    怎么给公司的产品做网络推广?

    2023年07月18日

  • 如何做百度移动SEO优化?提升M站流量排名

    如何做百度移动SEO优化?提升M站流量排名

    2023年07月18日

  • 单页面网站SEO怎么,有哪些利弊?

    单页面网站SEO怎么,有哪些利弊?

    2023年07月18日

  • 如何对自己的网站进行SEO优化?

    如何对自己的网站进行SEO优化?

    2023年07月18日

  • 教育加盟适合做百度关键词优化吗?好处在哪?

    教育加盟适合做百度关键词优化吗?好处在哪?

    2023年05月29日

  • 站群怎么优化?分享四个优化技巧

    站群怎么优化?分享四个优化技巧

    2023年05月29日

  • 网站关键词优化应该怎么做?关键词优化代理有哪些?

    网站关键词优化应该怎么做?关键词优化代理有哪些?

    2023年05月29日

热门标签

SHEIN 淘宝店转让 淘宝联盟 淘宝补单 淘宝直通车 天猫店铺 天猫店铺转让 京东入驻 天猫入驻 货代 跨境电商货代 虾皮 shopee shopify WordPress 小程序推广 小程序 蜘蛛日志 历史快照 SEO预算 问答营销 流量渠道 佛系SEO 搜索引擎蜘蛛 相关关键词 网站被封 百度蜘蛛 百度竞价转化 竞价账户 搜索引擎爬虫 语音搜索seo 抓取频率 百度站长 曾庆平SEO SEO外包 企业SEO 个人站长 SEO圈子 友链作弊 黑链 隐藏链接 桥页 关键词集权 小六SEO 新闻源网站

联系我们

在线咨询: 点击这里给我发消息

微信号:Seven11117_

工作日:9:30-18:30,节假日休息

代做工资流水公司蚌埠办离职证明邢台做银行流水杭州企业对私流水模板菏泽工资流水单泰安代做工资银行流水吉林代做企业对公流水嘉兴签证银行流水遵义离职证明代做蚌埠办房贷银行流水南宁做车贷银行流水无锡对公账户流水模板盐城查询自存流水菏泽银行流水PS代办洛阳工资证明模板成都查企业流水打印阜阳对公流水图片德阳代做个人工资流水大连房贷收入证明东莞收入证明样本菏泽流水账单办理镇江开企业对私流水包头个人银行流水多少钱泰州银行流水代做天津开转账银行流水济宁工资流水app截图多少钱昆明工资代付流水模板南京开企业对私流水柳州办理企业对公流水广州代开薪资流水单广州对公流水代办香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化