返回

Screaming Frog SEO Spider 内部链接导出到 BigQuery 时“重复列”错误的解决方法

Linux

使用 Screaming Frog SEO Spider 和 BigQuery 解析内部链接时的“重复列”错误及解决方法

问题:内部链接表加载到 BigQuery 时出现“重复列”错误

当你使用 Screaming Frog SEO Spider 爬取网站并将内部链接表导出为 CSV 文件,再尝试加载到 Google BigQuery 时,你可能会遇到“重复列”错误。这可能是由于原始 CSV 文件中存在重复的列,导致 BigQuery 在加载数据时发生冲突。

解决方案:使用命令行工具删除重复列

为了解决此问题,可以在加载数据到 BigQuery 之前,使用命令行工具从 CSV 文件中删除重复的列。下面是一个示例 Bash 脚本,可用于执行此任务:

#!/usr/bin/bash

# 获取网站域名
domain=$(curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/client-domain)

# 指定 Screaming Frog 配置文件路径
configpath="/home/user/Config.seospiderconfig"

# headless 爬取网站并导出内部链接数据到指定文件夹
screamingfrogseospider --crawl "$domain" --headless --config "$configpath" --output-folder ~/crawl-data/ \
--export-tabs "Internal:All,Directives:All,Hreflang:All,Pagination:All,Structured Data:All,Sitemaps:All" --overwrite --bulk-export "All Inlinks"

# 获取当前日期
now=$(date +"%Y%m%d")

# 从内部链接 CSV 文件中删除重复列
awk -F, '!seen[$11]++' ~/crawl-data/internal_all.csv > ~/crawl-data/internal_all_clean.csv

# 替换 CSV 文件中的空值为空格
tr '\0' ' ' < ~/crawl-data/internal_all_clean.csv > ~/crawl-data/internal_all_final.csv

# 加载清理后的 CSV 文件到 BigQuery
bq load --autodetect --source_format=CSV --allow_quoted_newlines --allow_jagged_rows --ignore_unknown_values \
${filename}.internal_${now} ~/crawl-data/internal_all_final.csv

修改说明:

  • 添加一行 awk 命令(awk -F, '!seen[$11]++' ~/crawl-data/internal_all.csv > ~/crawl-data/internal_all_clean.csv)来删除第 11 列(索引从 0 开始)的重复值。
  • 将清理后的 CSV 文件重命名为 ~/crawl-data/internal_all_final.csv,以便加载到 BigQuery。

常见问题解答

1. 如何确定要删除哪一列?

重复列的索引可能会因 Screaming Frog SEO Spider 的导出设置而异。你需要检查 CSV 文件的列标题,确定要删除的重复列。

2. 可以使用其他工具或方法来删除重复列吗?

是的,可以使用其他工具(如 Excel、LibreOffice 或 Pandas)来删除重复列。

3. 为什么使用 awk 命令来删除重复列?

awk 是一个命令行工具,特别适合于处理 CSV 文件。它允许使用正则表达式进行模式匹配,使删除重复列变得简单高效。

4. 如果重复列出现在多列中,我该如何处理?

你可以通过修改 awk 命令来针对多个列进行重复删除。例如,要删除第 11 和 12 列的重复值,可以使用:

awk -F, '!seen[$11,$12]++' ~/crawl-data/internal_all.csv > ~/crawl-data/internal_all_clean.csv

5. 如何防止将来发生“重复列”错误?

为了防止将来出现“重复列”错误,建议在导出内部链接数据之前,在 Screaming Frog SEO Spider 中检查列标题并确保没有重复。