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

Python中使用urlopen解析URL列表时遇字符串读取错误问题

解决urllib无法识别列表中URL的问题

兄弟,你这问题我太熟了!看你打印出来的URL格式是['premierleague.com/players/3861/player/overview#'],明显是从CSV读出来的每行数据被当成了列表,而不是单独的字符串,urllib的urlopen要的是纯字符串URL,自然会报错。

问题根源

当你用csv.reader读取CSV时,每次循环拿到的row其实是一个列表(哪怕每行只有一个URL),比如:

import csv
with open('urls.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)  # 输出就是 ['xxx.com/xxx'] 这种列表格式

直接把这个列表传给urlopen,它肯定不认啊!

两步解决问题

1. 提取列表中的字符串元素

循环时不要直接用row,而是取row[0],这样就能拿到纯字符串URL了:

import csv
from urllib.request import urlopen

with open('urls.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        # 提取列表里的第一个元素,拿到纯字符串URL
        url = row[0]
        # 别忘了补全HTTP/HTTPS前缀!很多人栽在这
        if not url.startswith(('http://', 'https://')):
            url = f'https://{url}'
        try:
            response = urlopen(url)
            text = response.read().decode('utf-8')
            # 这里处理你要的文本内容
            print(f"成功获取{url}的内容")
        except Exception as e:
            print(f"处理{url}时出错: {str(e)}")

2. 额外检查:URL是否完整

你打印的URL没有http://或https://前缀,这也是urlopen报错的常见原因!一定要补全,不然urllib会把它当成本地路径,肯定找不到。

为什么转字符串没用?

你之前尝试转字符串的话,得到的会是"['premierleague.com/xxx']"这种带括号和引号的字符串,这根本不是有效的URL,当然还是会报错。所以核心是要从列表里把真正的URL字符串取出来,而不是把整个列表转成字符串。

内容的提问来源于stack exchange,提问作者Michal A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:48:16