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

使用Python+BeautifulSoup解析网页链接时遇NoneType不可迭代错误

问题根源

网页里存在部分不带href属性的<a>标签,调用link.get('href')会返回None。当你尝试执行FILETYPE in mid_link时,程序试图在None(非可迭代类型)里查找子串,直接触发TypeError: argument of type 'NoneType' is not iterable错误。

修正代码

基于requests的版本

from bs4 import BeautifulSoup
import requests
URL= 'https://www.vgmusic.com/music/console/nintendo/snes/'
FILETYPE= '.mid'

def get_soup(url):
    return BeautifulSoup(requests.get(url).text, 'html.parser')

for link in get_soup(URL).find_all('a'):
    mid_link = link.get('href')
    # 先排除无href的情况,再检查文件后缀
    if mid_link and FILETYPE in mid_link:
        print(mid_link)

基于urlopen的版本

from bs4 import BeautifulSoup as bs
from urllib.request import urlopen
url="https://www.vgmusic.com/music/console/nintendo/snes/"
FILETYPE= ".mid"

soup = bs(urlopen(url))
for link in soup.findAll('a'):
    mid_link = link.get('href')
    # 先过滤无href的标签,再筛选mid文件
    if mid_link and FILETYPE in mid_link:
        print(mid_link)
可选优化

如果需要直接输出完整可访问链接,可以加上域名拼接:

# 以requests版本为例
DOMAIN = 'https://www.vgmusic.com/'
# ... 其余代码不变
if mid_link and FILETYPE in mid_link:
    full_link = DOMAIN + mid_link if not mid_link.startswith('http') else mid_link
    print(full_link)

内容的提问来源于stack exchange,提问作者freq-mod

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:35:05