Python利用BeautifulSoup4库获取input标签的value值

本文介绍了在Python中使用BeautifulSoup4库解析HTML时,如何正确获取input标签的value值。作者在更新库后遇到问题,经过查阅文档发现取值方法有所改变,并分享了最新的正确写法。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

确定使用 BeautifulSoup4 获取 input 的 value 值

今天接到一个解析网页内容的需求,要我从网页里找出订单号。

和往常一样,我不管现在流行什么,只是习惯性的首选了前些年最多人用的BeautifulSoup4

扫了一眼要解析的网页代码,发现挺简单的,我只需要通过其中一个input标签的id去取它对应的value值就可以了。

流程很简单,导入包,加载要解析的HTML代码,拿出结果

自信的输入代码,结果:翻车!

发现好久没有更新BeautifulSoup4的文件了。

成功更新后,马上啪啪一顿码代码:

# 导入BeautifulSoup4的包
from bs4 import BeautifulSoup
# 放入要解析的HTML代码,可以看到,只需要取 id 为 order_id 的 value 就可以了
html_source = "<input type=\"hidden\" id=\"order_id\" value=\"2021-05-15-1234\" />"
# 开始解析代码
html_soup = BeautifulSoup(html_source, "html.parser")
# 查找 id 为 order_id 的 input 标签,获取其 value 属性的值,将其保存到变量 order_value 中
order_value = html_soup.find('input', id = 'order_id')["value"]
# 输出
print(order_value)

执行后提示:

TypeError: 'NoneType' object is not subscriptable

出现错误的时候一愣,怎么以前好好的,现在不行了?

翻查了一下官网文档,又看了看本地的BeautifulSoup4版本,发现原来是更新了写法。

通过官方文档得知,要把取值的代码改掉。

原先的取值方法

order_value = html_soup.find('input', id = 'order_id')["value"]

修改为

order_value = html_soup.find('input', attrs={'id':'order_id'})['value']
最新的正确写法是这样

截止到现在最新的BeautifulSoup4 4.9.3,正确完整的写法,应该为:

# 导入BeautifulSoup4的包
from bs4 import BeautifulSoup
# 放入要解析的HTML代码,可以看到,只需要取 id 为 order_id 的 value 就可以了
html_source = "<input type=\"hidden\" id=\"order_id\" value=\"2021-05-15-1234\" />"
# 开始解析代码
html_soup = BeautifulSoup(html_source, "html.parser")
# 查找 id 为 order_id 的 input 标签,获取其 value 属性的值,将其保存到变量 order_value 中
order_value = html_soup.find('input', attrs={'id':'order_id'})['value']
# 输出
print(order_value)
后记

避免翻车,不轻易升级类库。还是得偶尔翻看官方文档,同步自己的知识库。

以上的阐述只对有基础的朋友有作用,如果对以上的知识点有质疑或者不懂的可以在下方留言。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家铭didphp

你的鼓励是我最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值