You need to enable JavaScript to run this app. Python Requests读取CSV传入URL时出现InvalidSchema报错的解决办法
优惠活动
大模型
产品
解决方案
定价
更多

Python Requests读取CSV传入URL时出现InvalidSchema报错的解决办法

核心报错成因
  • 触发InvalidSchema报错的本质是传入requests.get()的参数不是符合要求的合法URL格式
  • csv.reader的迭代逻辑决定了,每循环一次拿到的url_row是按CSV分隔符拆分后的列表结构,哪怕你的CSV整行只有1个URL、没有任何逗号分隔符,读出来的内容也是类似['https://www.website.com/page1/page2/']的单元素列表,直接把这个列表传给requests,会被序列化成带方括号、引号的字符串,完全不符合URL格式规范
  • 之前尝试将列表转为字符串未解决问题,大概率是直接用str(url_row)做转换,这种操作会把列表的所有格式字符一起保留进字符串,最终生成的就是报错提示里看到的"['https://www.website.com/page1/page2/']"这类无效URL,requests无法从中识别出http/https协议头,自然匹配不到对应的连接适配器
分步修正方法
  • 正确提取列表内的真实URL:不要直接把整行列表作为请求参数,定位URL在列表中的索引位置,取出对应元素后调用strip()方法,清理URL首尾的空格、换行等不可见残留字符
  • 提取完成后可快速校验URL格式:打印提取后的字符串,确认内容直接以http://或https://开头,外层没有多余的引号、方括号字符
  • 替换代码中为空的User-Agent值:空UA很容易被站点反爬策略直接拦截,填充常规浏览器的UA字符串可大幅提高请求成功率
  • 给请求加上超时参数,避免目标站点无响应时程序永久卡住
  • 增加空行、空URL的跳过逻辑,避免读取CSV时遇到空行触发索引越界报错
修正后的可运行参考代码
import csv
import requests
from bs4 import BeautifulSoup

# 配置常规浏览器请求头,避免空UA被拦截
HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

def get_html(url):
    # 配置10秒超时,避免无响应时程序卡死
    r = requests.get(url, headers=HEADERS, timeout=10)
    # 自动匹配页面编码,避免乱码
    r.encoding = r.apparent_encoding
    return r.text


def get_page_data(html):
    soup = BeautifulSoup(html, 'lxml')
    pass
    

def main():
    with open('p.csv', newline='', encoding='utf-8') as File:  
        reader = csv.reader(File)
        for url_row in reader:
            # 跳过CSV中的空行
            if not url_row:
                continue
            # 从行列表中提取URL,清理首尾残留字符
            target_url = url_row[0].strip()
            # 跳过空URL内容
            if not target_url:
                continue
            print(f"正在请求:{target_url}")
            get_page_data(get_html(target_url))

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 14:36:04