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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
python解析文件示例
Jan 23 Python
PyMongo安装使用笔记
Apr 27 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
Django实现快速分页的方法实例
Oct 22 Python
使用python编写监听端
Apr 12 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python 多线程共享全局变量的优劣
Sep 24 Python
Flask搭建一个API服务器的步骤
May 28 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性能分析工具XHProf安装使用教程
2015/05/13 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
js中的面向对象入门
2017/03/06 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
JS返回顶部实例代码
2020/08/09 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
javascript实现画板功能
2020/04/12 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
整理Python中的赋值运算符
2015/05/13 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python三引号如何输入
2020/07/06 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
大学生学习2014全国两会心得体会
2014/03/13 职场文书
文明寄语大全
2014/04/11 职场文书
个人求职信范文
2014/05/24 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
司机岗位职责
2015/02/04 职场文书
专家推荐信怎么写
2015/03/25 职场文书
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers