Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str


Posted in Python onAugust 07, 2019

在python的Beautiful Soup 4 扩展库的使用过程中出现了

TypeError: list indices must be integers or slices, not str

这个错误,这里就分析一下为什么会报错以及如何解决。

这个错误的意思是'类型错误:list的索引必须是'integers'或者'slices'不能是'str'

我出现错误的代码:

#引入库
from bs4 import BeautifulSoup
#读取页面
soup = BeautifulSoup(open('index.html'))
#获取标签
img_tag = div.select("img")
#获取标签属性(这里报错)
src = img_tag['src']
#输出
print(src)

经过检查对比后我发现错误原因

就是获取标签时获取的是list数据而不是tag

主要原因如下:

主要就是获取的内容和自己认为的有偏差。

也就是find()和find_all(),select()和select_one()的区别。

当使用

find()
select_one()

时,获得的是一个标签

类型为

<class 'bs4.element.Tag'>

所以可以使用tag['class']取值

当使用

find_all()
select()

时,获得的是组标签(就算只有一个标签也是一组)

类型为

#find_all()的返回值类型
<class 'bs4.element.ResultSet'>
#select()的返回值类型
<class 'list'>

这时,我们要取值就需要先定位是list(ResultSet)中的那个标签在取值

例如tag[0]['class']

解决方法

方法一:

#引入库
from bs4 import BeautifulSoup
#读取页面
soup = BeautifulSoup(open('index.html'))
#获取标签
img_tag = div.select("img")
#获取标签属性(这里有改动)
src = img_tag[0]['src']
#输出
print(src)

因为我知道页面中的结构可以确保获得的第一个bag为我需要的标签。
所以使用src = img_tag[0]['src']来获取属性信息。

方法二:

#引入库
from bs4 import BeautifulSoup
#读取页面
soup = BeautifulSoup(open('index.html'))
#获取标签
img_tag = div.select_one("img")
#获取标签属性(这里有改动)
src = img_tag['src']
#输出
print(src)

同上理,这样修改也是可以成功的。

出现这种问题还是因为自己不用心,还是要时刻提醒自己。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
pandas按若干个列的组合条件筛选数据的方法
Apr 11 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
python如何查看微信消息撤回
Nov 27 Python
python从子线程中获得返回值的方法
Jan 30 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
python对象转字典的两种实现方式示例
Nov 07 Python
python 实现dict转json并保存文件
Dec 05 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
Python使用sqlite3模块内置数据库
May 07 Python
pytorch fine-tune 预训练的模型操作
Jun 03 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 Python
python利用7z批量解压rar的实现
Aug 07 #Python
django基础学习之send_mail功能
Aug 07 #Python
python实现本地批量ping多个IP的方法示例
Aug 07 #Python
Django model 中设置联合约束和联合索引的方法
Aug 06 #Python
对django 模型 unique together的示例讲解
Aug 06 #Python
python django model联合主键的例子
Aug 06 #Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 #Python
You might like
PHP中的日期及时间
2006/11/23 PHP
深入理解PHP原理之异常机制
2010/08/21 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
Vue实现随机验证码功能
2020/12/29 Vue.js
python实现矩阵乘法的方法
2015/06/28 Python
在Django中创建第一个静态视图
2015/07/15 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
python为什么会环境变量设置不成功
2020/06/23 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
幼儿园门卫制度
2014/01/29 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
人事科岗位职责范本
2014/03/02 职场文书
美食节策划方案
2014/05/26 职场文书
个人承诺书格式范文
2015/04/29 职场文书
小学运动会通讯稿
2015/07/18 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server