xuegaoxiansen 发表于 2022-10-4 12:09

python运行没问题,但是有个报错,哪的问题呢

本帖最后由 xuegaoxiansen 于 2022-10-4 12:25 编辑

import requests
from bs4 import BeautifulSoup
import os

url = 'https://www.mmonly.cc/tag/yqmn/'

resp = requests.get(url)

html = (resp.content.decode('gbk'))

soup = BeautifulSoup(html,'html.parser')

titlea = soup.find_all('div',attrs={'class':'item_b'})

for item in titlea:

name = item.find_all('b').text
    try:
      os.mkdir('./学习/'+name)
    except Exception as e:
      continue

报错内容

haidibingjing 发表于 2022-10-4 12:22

name = item.find_all('b').text   应该是这里没有查到内容

xuegaoxiansen 发表于 2022-10-4 12:24

haidibingjing 发表于 2022-10-4 12:22
name = item.find_all('b').text   应该是这里没有查到内容

查到了呀,都成功的创建了文件夹并命名
运行没问题,就是看见这个报错想要知道怎么回事

haidibingjing 发表于 2022-10-4 12:29

xuegaoxiansen 发表于 2022-10-4 12:24
查到了呀,都成功的创建了文件夹并命名
运行没问题,就是看见这个报错想要知道怎么回事

我记得这个意思应该是超出索引范围,好久没写了

YuanFang0w0 发表于 2022-10-4 12:38

超出索引,你的内容不是一个列表或者列表为空

特别快递 发表于 2022-10-4 12:39

报错是因为类名为item_b的div标签,有的有<b>这个子标签有的没有,要在name = item.find_all('b').text这一行前面加一个判断item.find_all('b')是否存在,你程序能正常运行应该是没有<b>的正好在你所需要的标签的后面所以文件依然正常建立了,但其实程序是运行终止了的

hrpzcf 发表于 2022-10-4 12:57

你确定你发的代码是“学习.py”这个文件的吗?跟报错对不上啊,PyCharm点右上角运行的文件不一定是正在编辑的文件哦

netspirit 发表于 2022-10-4 13:01

切换成调试模式就能看到了

luxingyu329 发表于 2022-10-4 13:29


你的24行name = item.find_all('b').text 正则没有匹配到内容,是个空列表,所以是列表下标超出界限

fanvalen 发表于 2022-10-4 13:47

如果titlea=['b','']中有一个为空,再匹配一下就是就是[],一个没有任何元素的列表你访问0下标必然是超出索引
建议你打印titlea来看看内容
页: [1] 2 3
查看完整版本: python运行没问题,但是有个报错,哪的问题呢