在我关于搜索引擎领域的第一篇文章中,我将引用Ian Lurie的话作为开头:
日志文件分析是一门失落的艺术。但它可以挽救你的搜索引擎优化屁股!
明智的话。
然而,从服务器日志文件获取我们需要的数据通常是费力的:
庞大的日志文件需要健壮的数据摄入管道、可靠的云存储基础设施和可靠的查询系统
为了将神秘的原始日志数据转换为清晰的比特,适合于探索性数据分析和可视化,还需要细致的数据建模
在这个两部分系列的第一篇文章中,我将向您展示如何轻松地将分析扩展到更大的数据集,并从服务器日志中提取有意义的SEO见解。
所有这些都只是Python和谷歌云的一点点提示!
以下是我们具体的行动计划:
1 .我先给你们一些背景:
什么是日志文件,为什么它们对SEO很重要
如何找到他们
为什么在服务器日志分析方面,Python本身并不总是奏效
#2 -然后我们会把事情做好:
创建一个谷歌云平台帐户
创建一个谷歌云存储桶来存储我们的日志文件
使用命令行将我们的文件转换为一种兼容的格式,以便查询
手动和编程地将我们的文件转移到谷歌云存储
最后,我们将进入python化的本质——我们将:
使用Bigquery查询我们的日志文件,在Colab内部!
构建一个数据模型,使我们的原始日志更加清晰
创建分类列,这将进一步加强我们的分析
过滤并导出结果到.csv
在本系列的第二部分(将在今年晚些时候提供)中,我们将讨论Python中更高级的数据建模技术,以评估:
机器人爬行体积
爬预算浪费
复制URL爬行
我还将向您展示如何聚合和连接日志数据来搜索控制台数据,并使用Plotly Dash创建交互式可视化!
兴奋?让我们开始!
系统需求
在本文中我们将使用谷歌Colab。这里没有特定的要求或向后兼容性问题,因为谷歌Colab位于云中。
可下载的文件
可以在这里访问Colab笔记本
日志文件可以在Github上下载- 4个样本文件,每个20 MB,跨度4天(每个文件1天)
可以肯定的是,笔记本已经以闪电般的速度和没有任何障碍测试了几百万行!
序言:什么是日志文件?
虽然我不想过多谈论日志文件是什么,为什么它们对搜索引擎优化是无价的,等等(见鬼,已经有很多关于这个主题的好文章了!),这里有一些上下文。
服务器日志文件记录向web服务器发出的每个请求的内容。
每一个。单身。一个。
在最原始的形式下,日志是无法解读的,例如,下面是一些来自Apache webserver的原始行:
吓人的,不是吗?
原始日志必须被“清理”以便进行分析;这就是数据建模发挥作用的地方。稍后会详细介绍。
虽然日志文件的结构主要取决于服务器(Apache, Nginx, IIS等),它有常青属性:
服务器IP
日期/时间(也称为时间戳)
方法(GET或POST)
URI
HTTP状态代码
用户代理
通常可以添加其他属性,例如:
Referrer:将用户链接到您的站点的URL
当发生重定向时,重定向URL
发送的文件大小(以字节为单位)
花费的时间:处理请求和发送响应所需的时间
为什么日志文件对SEO很重要?
如果你不知道它们为什么重要,请阅读这篇文章。明智的时间!
访问您的日志文件
如果你不知道从哪里开始,最好的办法是询问你的(客户端的)Web开发人员/DevOps,看他们是否能允许你通过FTP访问原始服务器日志,最好不要应用任何过滤。
以下是在三个最流行的服务器上查找和管理日志数据的一般指南:
Apache日志文件(Linux)
NGINX日志文件(Linux)
IIS日志文件(Windows)
我们将在这个项目中使用原始Apache文件。
为什么当涉及到日志分析时,只有熊猫是不够的
panda(用Python构建的开源数据操作工具)在数据科学中非常普遍。
切分表数据结构是必须的,而且当数据能够装入内存时,哺乳动物的工作非常出色!
也就是说,只有几个gb。但不是tb。
除了并行计算(例如Dask, PySpark),数据库通常是无法装入内存的大数据任务的更好解决方案。使用数据库,我们可以处理消耗tb级磁盘空间的数据集。任何东西都可以轻松地查询(通过SQL)、访问和更新!
在这篇文章中,我们将通过谷歌BigQuery在Python中以编程方式查询原始日志数据。它易于使用,负担得起和闪电般的速度-甚至在兆兆字节的数据!
Python/BigQuery组合还允许您查询存储在谷歌云存储上的文件。甜蜜的!
如果您不喜欢谷歌,并且希望尝试其他替代方案,那么Amazon和Microsoft也提供云数据仓库。它们与Python集成得也很好: