1. 您的位置:首页 > seo技术 >内容

利用Python和Google Cloud从服务器日志数据中提取有意义的SEO见解

对于我在搜索引擎领域的第一篇文章,我将首先引用Ian Lurie:

日志文件分析是一门失传的艺术。 但这可以节省您的SEO对接!

明智的话。

但是,从服务器日志文件中获取我们需要的数据通常很麻烦:

  • 庞大的日志文件需要强大的数据接收管道,可靠的云存储基础架构和可靠的查询系统
  • 为了将神秘的原始日志数据转换为清晰的位,还需要细致的数据建模,适用于探索性数据分析和可视化

在这个分为两部分的系列的第一篇文章中,我将向您展示如何轻松地将分析扩展到更大的数据集,以及如何从服务器日志中提取有意义的SEO见解。

所有这些都只需要少量的Python和少量的Google Cloud!

这是我们的详细行动计划:

#1 –首先,我会给您一些背景信息:

  • 什么是日志文件以及为什么它们对SEO至关重要
  • 如何掌握它们
  • 为什么在服务器日志分析方面,仅凭Python不能总是削减它

#2 –然后我们进行设置:

  • 创建一个Google Cloud Platform帐户
  • 创建一个Google Cloud Storage存储桶以存储我们的日志文件
  • 使用命令行将我们的文件转换为兼容格式以进行查询
  • 手动编程将文件传输到Google Cloud Storage

#3 –最后,我们将深入探讨Pythoning的精髓–我们将:

  • 在Colab内部使用Bigquery查询我们的日志文件!
  • 建立数据模型,使我们的原始日志更加清晰
  • 创建分类列,以进一步增强我们的分析能力
  • 筛选结果并将其导出到.csv

在本系列的第二部分(将于今年晚些时候提供)中,我们将讨论更高级的Python数据建模技术,以评估:

  • 机器人抓取量
  • 抓紧预算浪费
  • 重复的网址抓取

我还将向您展示如何将日志数据汇总和加入Search Console数据,以及如何使用Plotly Dash创建交互式可视化!

激动吗让我们开始吧!

系统要求

我们将在本文中使用Google Colab。 由于Google Colab位于云端,因此这里没有特定要求或向后兼容性问题。

可下载的文件

  • 可在此处访问Colab笔记本
  • 日志文件可以在Github上下载-4个样本文件,每个20 MB,跨越4天(每个文件1天)

请放心,笔记本电脑已经以闪电般的速度经过了数百万行的测试,没有任何障碍!

序言:什么是日志文件?

尽管我不想过多地谈论什么是日志文件,但为什么它们对于SEO来说却是无价之宝,等等(哎呀,已经有很多关于该主题的文章了!),这里有一些上下文。

服务器日志文件记录了向Web服务器提出的每个内容请求。

每一个单。 一。

以最原始的形式,日志是无法理解的,例如,这是来自Apache Web服务器的一些原始行:

令人生畏的,不是吗?

必须对原始日志进行“清理”以便进行分析; 那就是数据建模的起点。但是稍后会介绍更多。

日志文件的结构主要取决于服务器(Apache,Nginx,IIS等),但它具有常绿的属性:

  • 服务器IP
  • 日期/时间(也称为时间戳)
  • 方法(GET或POST)
  • URI
  • HTTP状态码
  • 用户代理

通常可以包含其他属性,例如:

  • Referrer:将用户“链接”到您的网站的URL
  • 重定向的URL,发生重定向时
  • 发送文件的大小(以字节为单位)
  • 花费的时间:处理请求和发送响应所花费的时间

为什么日志文件对SEO很重要?

如果您不知道它们为什么重要,请阅读此内容。 明智地度过时间!

访问日志文件

如果您不确定从哪里开始,最好是询问您的(客户端)Web开发人员/ DevOps是否可以通过FTP授予您对原始服务器日志的访问权限,理想情况下无需应用任何过滤。

以下是在三种最受欢迎​​的服务器上查找和管理日志数据的一般准则:

  • Apache日志文件(Linux)
  • NGINX日志文件(Linux)
  • IIS日志文件(Windows)

我们将在该项目中使用原始Apache文件。

为什么在日志分析方面仅靠熊猫还不够

Pandas(使用Python构建的开源数据操作工具)在数据科学中非常普遍。

切片和切成表格的数据结构是必须的,当数据适合内存时,哺乳动物的工作就像一种魅力!

也就是几千兆字节。 但不是太字节。

除了并行计算(例如,Dask,PySpark)之外,数据库通常是内存不足的大数据任务的更好解决方案。 使用数据库,我们可以处理消耗数TB磁盘空间的数据集。 一切都可以查询(通过SQL),轻松访问和更新!

在本文中,我们将通过Google BigQuery在Python中以编程方式查询原始日志数据。 它易于使用,价格合理且闪电般迅捷-即使是数TB的数据!

Python / BigQuery组合还允许您查询存储在Google Cloud Storage上的文件。 甜!

如果Google不适合您,并且您想尝试其他选择,那么Amazon和Microsoft也提供云数据仓库。 它们也与Python集成良好:

亚马逊:

  • AWS S3
  • 红移

微软:

  • Azure存储
  • Azure数据仓库
  • Azure Synaps

创建GCP帐户并设置云存储

Google Cloud Storage和BigQuery都是Google Cloud Platform(GCP)(Google的云计算服务套件)的一部分。

GCP不是免费的,但您可以使用$ 300的赠送金额试用一年,并可以使用所有产品。 很酷

请注意,试用期结束后,Google Cloud Free Tier仍可让您免费访问大多数Google Cloud资源。 每月有5 GB的存储空间,如果您要试验小型数据集,进行概念验证等,通常就足够了。

相信我,有很多。 大。 东西至。 尝试!

您可以在这里注册免费试用。

完成注册后,将自动创建一个新的项目,其名称为一个随机且颇具异国情调的名称-例如,我的名字是“ learned-spider-266010 ”!

创建我们的第一个存储桶以存储我们的日志文件

在Google Cloud Storage中,文件存储在“存储桶”中。 它们将包含我们的日志文件。

要创建第一个存储桶,请转到存储>浏览器>创建存储桶:

值区名称必须是唯一的。 我已将我的名字恰当地命名为“ seo_server_logs”!

然后,我们需要选择存储日志数据的位置和方式:

  • #1位置类型–“区域”通常就足够了。
  • #2地理位置–我住在英国,因此选择了“欧洲西部2”。 选择您最近的位置
  • #3单击“继续”

默认存储类别: “近线”效果很好。 它比标准版便宜,并且可以足够快地检索数据:

访问对象: “统一”可以:

最后,在“高级设置”块中,选择:

  • #1 – Google管理的金钥
  • #2 –没有保留政策
  • #3 –暂时无需添加标签

完成后,单击“创建”。

您已经创建了第一个存储桶! 是时候上传我们的日志数据了。

将日志文件添加到您的Cloud Storage存储桶

您随时可以上传任意数量的文件!

最简单的方法是将文件拖放到Cloud Storage的Web UI,如下所示:

但是,如果您真的想认真对待日志分析,强烈建议您自动化数据提取过程!

您可以尝试以下几种方法:

  • 可以在FTP服务器和Cloud Storage基础设施之间设置Cron作业:
    • Gsutil(如果在GCP上)
    • SFTP传输(如果在AWS上)
  • 像Cyber​​duck这样的FTP管理器也提供向存储系统的自动传输
  • 此处提供更多数据提取提示(AppEngine,JSON API等)

关于文件格式的快速说明

在Github中上传的示例文件已经为您转换为.csv。

请记住,您可能必须将自己的日志文件转换为兼容的文件格式以进行SQL查询。 Bigquery接受.csv或.parquet。

可以通过命令行轻松地将文件批量转换为其他格式。 您可以在Windows上按以下方式访问命令行:

  • 打开Windows的开始菜单
  • 在搜索栏中输入“命令”
  • 从搜索结果中选择“命令提示符”
  • 我尚未在Mac上尝试过此操作,但我相信CLI位于“实用工具”文件夹中

打开后,通过以下命令导航到包含要转换的文件的文件夹:

CD 'path/to/folder'

只需将path/to/folder替换path/to/folder您的路径即可。

然后,键入以下命令以将.log文件转换为.csv:

for file in *.log; do mv "$file" "$(basename "$file" .*0).csv"; done

请注意,您可能需要启用Windows Subsystem for Linux才能使用此Bash命令。

现在我们的日志文件已经以正确的格式存在,现在该开始Pythoning了!

释放Python

我还需要展示Python吗?!

根据Stack Overflow的介绍,Python现在是增长最快的主要编程语言。 由于像Hamlet或JR这样的Python传教士,它在SEO领域也越来越受欢迎。

您可以通过Jupyter笔记本电脑或IDE在本地计算机上运行Python,甚至可以通过Google Colab在云中运行Python。 在本文中,我们将使用Google Colab。

请记住,笔记本在这里,代码片段以及说明都粘贴在下面。

导入库+ GCP身份验证

我们将从运行以下单元格开始:

它导入我们需要的Python库,并将您重定向到身份验证屏幕。

在这里,您必须选择链接到GCP项目的Google帐户。

连接到Google Cloud Storage(GCS)和BigQuery

为了将我们的Python笔记本连接到GCS和BigQuery,需要添加大量信息。 此外,手动填写该信息可能很繁琐!

幸运的是,Google Colab的表格使参数化参数和节省时间变得容易。

此笔记本中的表格已为您预先填充。 尽管我确实建议您修改代码以适合您的需求,但是无需执行任何操作。

创建自己的表单的方法如下:转到插入>添加表单字段>然后填写以下详细信息:

当您更改表单中的元素时,其相应的值将在代码中神奇地改变!

填写“项目ID”和“存储区位置”

在我们的第一种形式中,您需要添加两个变量:

  • 您的GCP PROJECT_ID(我的是“ learned-spider-266010”)
  • 您的存储桶位置:
    • 要找到它,请在GCP中转到存储>浏览器>检查表中的位置
    • 我的是'europe-west2'

这是该表格的代码段:

填写“存储桶名称”和“文件/文件夹路径”:

在第二种形式中,我们需要填写另外两个变量:

值区名称:

  • 要找到它,请在GCP中转到:存储>浏览器>然后在表中检查其“名称”
  • 我恰当地称它为“ apache_seo_logs”!

文件路径:

  • 您可以使用通配符查询多个文件-非常好!
  • 例如,使用通配符路径“ Loggy * ”,Bigquery会一次查询以下三个文件:
    • Loggy01.csv
    • Loggy02.csv
    • Loggy03.csv
  • Bigquery还会为此创建一个临时表(下面有更多内容)

这是表格的代码:

将Python连接到Google Cloud Storage和BigQuery

在第三种形式中,您需要为您的BigQuery表命名-我将其命名为“ log_sample”。 请注意,不会在您的Bigquery帐户中创建此临时表。

好的,现在情况变得非常令人兴奋,因为我们可以开始通过SQL查询数据集,而不必离开笔记本–这太酷了!

由于日志数据仍为原始格式,因此查询受到了某种限制。 但是,我们可以应用基本的SQL过滤,以稍后加快Pandas的操作。

我以这种形式创建了2个SQL查询:

  • “ SQL_1st_Filter”可过滤任何文本
  • “ SQL_Useragent_Filter”,通过下拉菜单选择您的User-Agent

随时检查基础代码,并根据需要调整这两个查询。

如果您的SQL琐事有点生疏,这里是Kaggle的不错的复习!

该表格的代码:

将列表输出转换为Pandas Dataframe

BigQuery生成的输出是一个二维列表(也称为“列表列表”)。 我们需要通过以下代码将其转换为Pandas Dataframe:

做完了! 现在,我们有了一个可以在Pandas中解决的数据框!

数据清理时间,熊猫方式!

是时候通过以下方式使这些神秘的日志更加生动了:

  • 分割每个元素
  • 为每个元素创建一列

分割IP位址

分割日期和时间

现在,我们需要通过Pandas to_datetime()方法将date列从字符串转换为“ Date time”对象:

这样做将使我们能够执行时序操作,例如:

  • 切片特定日期范围
  • 重新采样不同时间段的时间序列(例如,每天到一个月)
  • 计算滚动统计信息,例如滚动平均值

当涉及到时间序列操纵时,Pandas / Numpy组合真的非常强大,请查看此处可以做的一切!

以下是更多拆分操作:

分割网域

拆分方法(获取,发布等)

分割网址

拆分HTTP协议

分割状态码

拆分“花费时间”

拆分引荐网址

拆分用户代理

分割重定向的URL(如果存在)

重新排序栏

是时候检查我们的杰作了:

做得好! 仅需几行代码,即可将一组隐秘日志转换为结构化的数据框,以准备进行探索性数据分析。

让我们添加一些其他功能。

创建分类列

这些分类列将很方便进行数据分析或可视化任务。 我们将创建两个,为您自己的实验铺平道路!

创建一个HTTP代码类列

创建搜索引擎机器人类别列

如您所见,已经创建了我们的新列httpCodeClassSEBotClass

发现“欺骗”的搜索引擎机器人

我们仍然需要解决SEO的关键一步:验证IP地址确实来自Googlebots。

这一切都归功于伟大的泰勒·雷登(Tyler Reardon)! 泰勒创建了searchtools.io,这是一个聪明的工具,它可以根据反向DNS查找来检查IP地址并返回“假” Googlebot地址。

我们只是将该脚本集成到了笔记本中,如下所示:

运行上面的单元格将创建一个名为“ isRealGbot?”的新列:

请注意,该脚本仍处于初期阶段,因此请考虑以下注意事项:

  • 检查大量IP地址时,您可能会出错。 如果是这样,就绕开电池
  • 当前仅检查Googlebots

泰勒和我正在努力对该脚本进行改进,因此请密切关注Twitter,以获取将来的增强功能!

在最终导出之前过滤数据框

如果您希望在导出到.csv之前进一步优化表,则有机会过滤掉不需要的状态代码并优化时间表。

一些常见的用例:

  • 您有12个月的日志数据存储在云中,但只想查看最近2周
  • 您最近进行了网站迁移,并希望检查所有重定向(301、302等)及其重定向位置
  • 您要检查所有4XX响应码

按日期筛选

通过以下表格优化开始和结束日期:

按状态码过滤

过滤前检查状态码的分布:

码:

然后通过以下形式过滤HTTP状态代码:

相关代码:

导出到.csv

最后一步是将数据框导出到.csv文件。 通过导出表单为其命名:

最后一种形式的代码:

最后的话语和喊叫声

如果您一直关注到这里,请轻拍背面! 在本文过程中,您已经取得了很多成就!

我迫不及待想通过更高级的数据建模/可视化技术将它带入下一篇文章中的下一个级别!

我要感谢以下人员:

  • 泰勒·雷登(Tyler Reardon),他帮助我将他的反欺骗工具集成到了此笔记本中!
  • Octamis的Paul Adams和我的同胞Olivier Papon的专家建议
  • 最后但并非最不重要的一点,是Hamlet Batista或JR Oakes的荣誉–感谢大家对SEO社区如此鼓舞!

如有疑问或需要进一步的帮助,请通过Twitter与我联系。 任何反馈(包括拉取请求!:))也非常感谢!

快乐的Pythoning!

今年的SMX Advanced将为开发人员提供全新的SEO,并通过高科技课程(许多采用实时编码格式)进行跟踪,重点是使用代码库和体系结构模型来开发可改善SEO的应用程序。 SMX Advanced将于6月8日至10日在西雅图举行。 立即注册。


本文表达的观点是来宾作者的观点,不一定是Search Engine Land。 工作人员作者在此处列出。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。如若转载,请注明出处:http://www.botadmin.cn/sylc/10297.html