网址导航网首页

嗨,欢迎来到25Qi网址导航

站长QQ:2598903095

SEO学习

一份网站蜘蛛抓取日志数据分析秘诀,你值得拥有!

时间:2021-08-19 丨 作者: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来进行处理了,合理分配有限的抓取频次,让你高质量页面更多抓取、收录、排名。

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

在线随机小姐姐图片换一批
最新收录
  • 黄飞鸿热炙理疗

    黄飞鸿热灸馆加盟项目,整店输出模式,专业热灸加盟技术培训,一个专业做中医养生的连锁品牌。源自黄飞鸿的嫡孙继承了黄飞鸿先生的遗志,多年来一直坚定不移地致力于大健康产业,并创立了黄飞鸿热灸馆;主要业务服务有黄飞鸿热炙理疗,黄飞鸿热炙理疗馆加盟,黄飞鸿理疗馆,黄飞鸿热灸,黄飞鸿养生馆加盟,黄飞鸿养生馆加盟,黄飞鸿热灸馆,黄飞鸿热灸体验馆,黄飞鸿热灸馆加盟,黄飞鸿热灸理疗馆,黄飞鸿热灸膏

  • tp钱包

    TokenPocket钱包支持数字资产存储。每天走势掌握,功能强大,在线管理数字货币,超多币种推送,多种交易方式,私钥用户自持且轻便易用的以太坊轻钱包。tp支持多资产类型,如:TokenPocket、ETH、QTUM、AE、BTM等大多数主流币种,让tp钱包更好地融入你的生活。

  • 浙江丰安齿轮股份有限公司

    浙江丰安齿轮股份有限公司成立于1999年1月,是一家集开发、设计、制造、销售服务为一体的齿轮专业制造商,占地面积93亩,总资产3亿余元,主要设备400余台。公司于2017年1月在“新三板”挂牌,股票代码870508。公司以精湛的技术、过硬的品质、优良的服务来赢得客户满意,努力打造业界一流齿轮制造企业。

  • 浙江中孚环境设备股份有限公司

    我公司系高新技术企业,专业从事空气净化的产品生产、工程服务及洁净技术的应用与研究,提供从空调处理设备、空调自动控制系统到洁净室系统全面服务,为各类工业用空气处理提供一揽子解决方案及交钥匙工程。   产品遍及全国几十个省市,并出口至巴基斯坦、伊朗等国家。我公司在化纤工艺空调领域精耕细作20余年,2001年进入医药、电子等行业的净化空调设备。   本公司拥有雄厚的技术力量和良好的售后服务,承接系统设计、技术咨询、产品制造、技术改造等项目。设备采用工业计算机、可编程序(PLC)控制器、数字直接控制器(DDC)等智能控制器,可实现节能显著的运行系统(节能策略有:新回风的焓值控制、二次回风、送风机的变频调速;非露点控制方案在过渡季节节能50%。在化纤纺丝行业采用的节能措施,同样可在医药行业的净化空调上使用);采用与国际惯例接轨的CAD设计和质量保证体系。

  • 江苏双友智能装备科技股份有限公司

    双友科技为客户提供直缝埋弧焊管生产线、直缝高频焊管生产线、螺旋埋弧焊管生产线、钢管内外防腐生产线,石油套管生产线,热处理生产线以及其他系列产品。同时公司致力于为高端铝业服务,为客户提供更为高效,节能,环保,安全的铸铝生产线及其相关设备。公司积极推进国际化发展战略,逐步实现品牌、市场、团队、技术、管理与国际化标准接轨。此外,公司与众多国际知名管材和铝材生产商建立了紧密的合作关系,在中东设立了海外分支机构。双友科技旨在将中国的高端制造带给世界。

  • 南京三超新材料股份有限公司

    南京三超新材料股份有限公司成立于1999年1月,注册资本9360万元,2017年4月21日,在深圳创业板成功挂牌上市。占地面积130亩,建筑面积约86,000平方米。是一家专业从事金刚石、立方氮化硼工具的研发、生产与销售的高新技术企业,现拥有金刚石砂轮和金刚石线两大类相互协同的产品系列,应用于硅、蓝宝石、石英、铁氧体、钕铁硼、陶瓷、玻璃、硬质合金等硬脆材料的精密切割、磨削与抛光。 公司自成立以来,始终坚持"以人为本、技术优先"的发展理念,先后引入多名外籍专家,并在日本成立了超硬材料工具的专业研发机构。经过多年研发,公司成为国内最早通过自主研发掌握金刚线制造的相关技术,成功实现产业化的企业之一,并且打破了国外企业的技术垄断,与新研发成功的硅片背面减薄砂轮、硅片倒角砂轮、PAD修整器等产品,为半导体及太阳能光伏行业提供了优质的金刚石工具,并凭借良好的品质与高性价比,赢得了众多实力用户认可,在国内形成了较高的行业影响力。