You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量爬取多站点数据至Url_id命名文件时内容重复问题排查

解决爬取内容按URL_ID写入文件时内容重复、一致的问题

你的代码存在两个核心问题:

  • 所有文件内容相同:遍历urls时未将每个URL与对应的url_id绑定,反而在内部循环遍历全部url_id,导致每个URL的爬取内容被写入所有ID对应的文件,最终所有文件仅保留最后一次遍历的内容。
  • 重复循环写入:嵌套循环层级混乱,在article_title的循环内又嵌套了url_id和article_texts的循环,造成重复写入操作。

修正后的代码

import os
import requests
import pandas as pd
from bs4 import BeautifulSoup

# 读取Excel文件
data_ex = pd.read_excel('input.xlsx')
# 提前创建目标文件夹,避免重复判断
folder = 'files_folder'
if not os.path.exists(folder):
    os.makedirs(folder)

# 同时遍历URL_ID和对应的URL,确保一一对应
for idx, row in data_ex.iterrows():
    url_id = row['URL_ID']
    url = row['URL']
    
    # 请求网页
    res = requests.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    
    # 获取文章标题(增加容错判断)
    article_title = soup.find("h1", class_="entry-title")
    title_text = article_title.getText().strip() if article_title else "无标题"
    
    # 获取文章详情(增加容错判断)
    article_content = soup.find(class_="td-post-content tagdiv-type")
    content_text = article_content.getText().strip() if article_content else "无内容"
    
    # 生成文件路径并写入内容
    file_path = os.path.join(folder, f"{url_id}.txt")
    with open(file_path, 'w', encoding="utf-8") as file:
        file.write(f"{title_text}\n\n{content_text}")

关键改动说明

  1. 绑定URL与URL_ID:使用data_ex.iterrows()同时遍历每行的URL_ID和URL,确保每个ID对应唯一的目标网页,从根源解决内容错位问题。
  2. 简化循环结构:去掉多余的嵌套循环,每个URL的爬取和写入逻辑独立完成,避免重复操作。
  3. 提前创建文件夹:将文件夹创建逻辑移到循环外,避免每次循环都判断文件夹是否存在,提升效率。
  4. 增加容错处理:对标题和内容的获取增加判断,避免网页结构异常导致代码报错。
  5. 优化内容格式:用strip()去除多余空白字符,用换行分隔标题和内容,提升文件可读性。

内容的提问来源于stack exchange,提问作者Abuchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:47:13