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 相关文章推荐
Python中的多重装饰器
Apr 11 Python
Python中的map()函数和reduce()函数的用法
Apr 27 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
python中zip()方法应用实例分析
Apr 16 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python标准库之collections包的使用教程
Apr 27 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
python opencv 图像拼接的实现方法
Jun 27 Python
Django接收自定义http header过程详解
Aug 23 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
Python实现对adb命令封装
Mar 06 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自动识别字符集并完成转码详解
2013/08/02 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
PHP多线程类及用法实例
2014/12/03 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
angularjs $http调用接口的方式详解
2018/08/13 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
使用python爬取B站千万级数据
2018/06/08 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
详解python对象之间的交互
2020/09/29 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
行政助理工作职责范本
2014/03/04 职场文书
文案策划专业自荐信
2014/07/07 职场文书
党支部活动策划方案
2014/08/18 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
简爱读书笔记
2015/06/26 职场文书
勤俭节约主题班会
2015/08/13 职场文书
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android