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

Python处理CSV中URL:清洗、打开及内容写入新列方法咨询

嘿,作为有3年C语言业余开发经验的Python新手,你上手这些操作其实会比纯小白快很多!我来一步步帮你搞定这个需求:

第一步:清洗CSV中的URL列

你看到的b'https://...'格式,本质是把Python的字节串(bytes)直接以字符串形式存在了CSV里。我们要做的就是去掉冗余的前缀后缀,还原成标准URL字符串。

处理思路

  1. 用Python内置的csv模块读取原CSV(不用额外安装,省心)
  2. 遍历目标列的每个单元格,先去掉首尾空格,再剥离掉开头的b'和结尾的'

代码示例(基础版)

假设你的CSV里URL列名叫"URL",先写个清洗的基础代码:

import csv

input_file = "你的输入文件.csv"
output_file = "清洗后的临时文件.csv"

with open(input_file, 'r', encoding='utf-8') as in_csv, open(output_file, 'w', newline='', encoding='utf-8') as out_csv:
    reader = csv.DictReader(in_csv)
    writer = csv.DictWriter(out_csv, fieldnames=reader.fieldnames)
    writer.writeheader()
    
    for row in reader:
        # 清洗URL:先去空格,再剥离b'和'
        raw_url = row["URL"]
        cleaned_url = raw_url.strip().lstrip("b'").rstrip("'")
        row["URL"] = cleaned_url  # 替换原列的内容
        writer.writerow(row)
第二步:抓取链接内容并写入新列

接下来要抓取每个URL的网页文本,推荐用**requests**(发HTTP请求)+ BeautifulSoup4(解析HTML提取文本)的组合,这俩是Python爬虫的入门标配。

先安装依赖

打开终端跑这两条命令:

pip install requests
pip install beautifulsoup4

整合代码(抓取+写入新列)

把清洗和抓取逻辑合并,直接输出带新列的CSV:

import csv
import requests
from bs4 import BeautifulSoup

input_file = "你的输入文件.csv"
output_file = "带内容的最终文件.csv"

# 模拟浏览器请求头,避免被网站拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

with open(input_file, 'r', encoding='utf-8') as in_csv, open(output_file, 'w', newline='', encoding='utf-8') as out_csv:
    reader = csv.DictReader(in_csv)
    # 给输出文件新增一列,比如叫"帖子内容"
    output_fields = reader.fieldnames + ["帖子内容"]
    writer = csv.DictWriter(out_csv, fieldnames=output_fields)
    writer.writeheader()
    
    for row in reader:
        # 第一步:清洗URL
        raw_url = row["URL"]
        cleaned_url = raw_url.strip().lstrip("b'").rstrip("'")
        row["URL"] = cleaned_url
        
        # 第二步:抓取网页内容
        content = ""
        try:
            # 发送GET请求
            response = requests.get(cleaned_url, headers=headers, timeout=10)
            response.raise_for_status()  # 请求失败直接抛出异常
            
            # 解析HTML提取文本
            soup = BeautifulSoup(response.text, 'html.parser')
            # 针对Facebook帖子,找对应的内容区域(class可能会变,不行就用下面的全局文本)
            post_divs = soup.find_all('div', class_='x193iq5w xeuugli x13faqbe x1vvkbs x1xmvt09 x1lliihq x1s928wv xhkezso x1gmr53x x1cpjm7i x1fgarty x1943h6x xudqn12 x3x7a5m x6prxxf xvq8zen xo1l8bm xzsf02u')
            if post_divs:
                content = "\n".join([div.get_text(strip=True) for div in post_divs])
            else:
                # 找不到特定区域就提取页面所有文本(会有冗余,但总比空着好)
                content = soup.get_text(strip=True, separator='\n')
        except Exception as e:
            # 抓取失败时记录错误信息,不中断整个程序
            content = f"抓取失败:{str(e)}"
        
        row["帖子内容"] = content
        writer.writerow(row)
注意事项
  1. 反爬问题:Facebook对非浏览器请求很敏感,可能会拦截或者要求登录。如果上面的代码抓不到内容,可以试试用selenium模拟真实浏览器操作(需要装ChromeDriver),不过30个链接的话,先加了请求头试试,大概率能行。
  2. 编码问题:读写CSV一定要加encoding='utf-8',不然中文或者特殊字符容易乱码。
  3. 异常处理:代码里加了try-except,就算某个链接无效或者抓取失败,程序也会继续处理剩下的链接,不会直接崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:49:05