返回
Screaming Frog SEO Spider 内部链接导出到 BigQuery 时“重复列”错误的解决方法
Linux
2024-03-22 11:59:28
使用 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 中检查列标题并确保没有重复。