使用 Python 解析和透视 SEO 文件

已发表: 2021-08-10

对于任何优秀的 SEO 专业人士来说,一个重要的数据来源是在日志文件中找到的搜索引擎抓取数据。 您可以分析日志文件以准确了解搜索引擎如何抓取和理解您的网站。 这为您提供了第三方 SEO 工具无法提供的洞察力。 如果您想节省时间和金钱,请尝试使用 Python 自动解析、验证和透视 SEO 的日志文件数据。 在本文中,我们将引导您完成如何使用 Python 解析和透视 SEO 文件的步骤。

如何使用 Python 解析和透视 SEO 文件

为什么应该使用 Python 来解析和透视 SEO 文件

Python 是一种多用途编程语言,在数据、Web 开发和执行算法方面具有广泛的应用。 使用 Python 从日志文件中解析和透视 SEO 数据可帮助您:

  • 通过为您提供有关搜索引擎如何抓取和查看您的网站的具体证据来验证您的结论
  • 通过帮助您了解问题的规模以及修复它可以提供多大帮助来确定您的发现的优先级
  • 查找您在其他数据源中看不到的任何其他问题

尽管使用日志文件数据有几个好处,但许多 SEO 专家出于各种原因而远离它。 一方面,查找数据通常意味着要经过一个开发团队,这可能需要很多时间。 此外,原始文件可能很大且难以理解,这使得解析数据变得困难。 最后,旨在简化流程的工具成本可能太高。

虽然这些都是合理的担忧,但还有另一种方式。 如果您对编码和脚本语言一定的了解,则可以自动化该过程。 我们将引导您完成如何使用 Python 分析 SEO 的服务器日志的步骤。

如何使用 Python 解析和透视 SEO 文件

在开始之前,您需要考虑要使用哪种格式来解析日志文件数据。 您有多种选择,例如 Apache、Nginx 和 IIS。 此外,许多网站现在使用 CDN 提供商(如 Cloudflare、Cloudfront 和 Akamai)从最近的边缘位置向用户提供内容。

在本文中,我们将重点介绍组合日志格式。 这是因为合并日志格式是 Nginx 的默认格式,并且通常是 Apache 服务器上的选择。

如果您不知道您正在处理哪种格式,那么有像 Builtwith和 Wappalyzer 这样的服务可以告诉您网站的技术堆栈。

如果您仍然不确定,只需打开原始文件之一。 交叉引用提供的评论和特定领域的信息。

您还需要考虑要包含哪个搜索引擎。 在这篇文章中,我们将重点关注谷歌,因为谷歌是占全球市场份额超过 92% 的最主要的搜索引擎

使用 Python 解析和透视 SEO 文件

1. 识别文件并确定格式

为了执行相应的 SEO 分析,对于一个典型的网站,您至少需要大约 100,000 个请求和两到四个星期的数据。 由于文件的大小,日志通常分为单独的日期。 您很可能会收到多个要处理的文件。

由于除非在运行脚本之前将它们组合起来,否则您不知道将要处理多少文件,因此第一步是使用 glob 模块生成我们文件夹中所有文件的列表。 然后,您可以返回与我们指定的模式匹配的任何文件。 以下代码将匹配任何 TXT 文件:

导入全局

文件 = glob.glob('*txt.')

但是,并非所有文件都是 TXT。 日志文件可以采用多种文件格式。 您甚至可能无法识别文件扩展名。

您收到的文件也有可能被拆分到多个子文件夹中,我们不想浪费时间将它们复制到一个位置。 幸运的是, glob 支持递归搜索和通配符运算符 这意味着您可以生成子文件夹或子文件夹中所有文件的列表。

files = glob.glob('**/*.*', recursive=True)

接下来,您要确定列表中包含哪些类型的文件。 为此,可以检测特定文件的 MIME 类型。 这会告诉您正在处理的文件类型,无论扩展名如何。

您可以通过使用 python-magic(一个围绕 libmagic C 库的包装器)并创建一个简单的函数来做到这一点。

pip 安装 python-magic

pip 安装 libmagic

进口魔法

def file_type(file_path):

mime = magic.from_file(file_path, mime=True)

返回哑剧

接下来,您可以使用列表理解来遍历您的文件并应用该函数,创建一个字典来存储名称和类型。

file_types = [file_type(file) for file in files]

file_dict = dict(zip(files, files_types))

最后,使用函数和 while 循环提取返回 MIME 类型的文本/纯文本并排除其他任何内容的文件列表。

未压缩 = []

def file_identifier(文件):

对于 key,file_dict.items() 中的值:

如果文件值:

uncompressed.append(key)

而 file_identifier('text/plain'):

file_dict 中的 file_identifier('text/plain')

如何解析和透视 seo 日志文件

2. 提取搜索引擎请求

过滤文件夹中的文件后,下一步是通过仅提取您关心的请求来过滤文件本身。

这消除了使用命令行实用程序(如 GREP 或 FINDSTR)组合文件的需要,并节省了搜索正确命令的时间。

在这种情况下,由于您只需要 Googlebot 请求,您将搜索“Googlebot”以匹配所有相关的用户代理。

您可以使用 Python 的 open 函数来读取和/或写入您的文件,并使用 Python 的正则表达式模块 RE 来执行搜索。

3. 解析请求

有多种方法可以解析请求。 为了本文,我们将使用Pandas 的内置 CSV 解析器和一些基本的数据处理功能,以便:

  • 删除不必要的列
  • 格式化时间戳
  • 创建一个包含完整 URL 的列
  • 重命名和重新排序剩余的列

您可以使用输入函数来提示用户并将其保存为变量,而不是对域名进行硬编码。

4. 验证请求

欺骗搜索引擎用户代理非常简单,使请求验证成为该过程的重要组成部分,这可以防止您通过分析自己的第三方爬网得出错误的结论。

为此,您需要安装一个名为 dnspython 的库并执行反向 DNS。 您可以使用 pandas 删除重复的 IP 并在较小的 DataFrame 上运行查找。 然后,重新应用结果并过滤所有无效请求。

这种方法极大地提高了查找速度,并在几分钟内验证了数百万个请求。

为什么你应该对 seo 文件使用 python

5. 透视数据

验证后,您将拥有一组经过清理且易于理解的数据。 您可以开始旋转此数据以更轻松地分析兴趣点。

您可以从使用 Pandas 的 groupby 和 agg 函数的简单聚合开始,对不同状态代码的请求数量进行计数。

status_code = logs_filtered.groupby('状态码').agg('size')

为了复制您在 Excel 中使用的计数类型,您需要指定“大小”而不是“计数”的聚合函数。 如果您使用 count,您将在 DataFrame 中的所有列上调用该函数,并且空值的处理方式不同。 重置索引将恢复两列的标题,后一列可以重命名为更相关的内容。

如果您想要更高级的数据操作,Pandas 的内置数据透视表提供的功能可与 Excel 相媲美,只需一行代码即可实现复杂的聚合。 在最基本的层面上,该函数需要指定的 DataFrame 和索引(如果需要多索引,则为索引)并返回相应的值。

为了更加具体,可以使用 aggfunc 参数声明所需的值并应用聚合(总和、均值等)。 columns 参数还可以帮助您水平显示值以获得更清晰的输出。

合并范围

对于像字节这样的数据点,可能有许多不同的数值,您需要对数据进行存储。 为此,请在列表中定义您的间隔,然后使用 cut 函数将值分类到 bin 中,指定 np.inf 以捕获有关声明的最大值的任何内容。

6. 出口

最后,您需要导出日志数据和数据透视。 为了更易于分析,您需要将数据导出到 Excel 文件而不是 CSV。 XLSX 文件支持多张工作表,这意味着您可以将所有数据帧合并到一个文件中。 您可以使用 excel 来实现这一点。 您将需要指定 ExcelWriter 对象,因为您要向同一个工作簿添加多个工作表。 另外,当您导出大量数据透视表时,通过在字典中存储数据帧和工作表名称并使用 for 循环来帮助简化事情。

请记住,Excel 的行数限制为 1,048,576。 由于您要导出每个请求,因此如果您有大量样本,这可能会导致问题。 CSV 文件没有限制,因此可以使用 if 语句在 CSV 导出中添加作为后备。 然后,如果日志文件 DataFrame 的长度超过 1,048,576,则将其导出为 CSV。 这可以防止脚本失败,并且仍然将枢轴合并到单个导出中。

如何使用python进行SEO

使用 SEO Design Chicago 解析和透视 SEO 文件

虽然使用 Python 解析和透视 SEO 文件是一项有用的技能,但它也很难掌握。 如果您需要有关 SEO 文件的帮助,请立即联系SEO Design ChicagoSEO 数据专家寻求帮助!

常见问题:

  • 什么是 Python?
  • 如何使用 Python 解析和透视我的 SEO 文件?
  • 为什么我应该使用 Python 来解析和透视我的 SEO 文件?
  • 如何使用 Python 提取搜索引擎请求?
  • 我是否需要知道如何编码以解析和透视我的 SEO 文件?