Python利用BeautifulSoup4库获取input标签的value值
Posted 家铭didphp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python利用BeautifulSoup4库获取input标签的value值相关的知识,希望对你有一定的参考价值。
确定使用 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)
后记
避免翻车,不轻易升级类库。还是得偶尔翻看官方文档,同步自己的知识库。
以上的阐述只对有基础的朋友有作用,如果对以上的知识点有质疑或者不懂的可以在下方留言。
以上是关于Python利用BeautifulSoup4库获取input标签的value值的主要内容,如果未能解决你的问题,请参考以下文章
Python网络爬虫——BeautifulSoup4库的使用
Python3 利用pip安装BeautifulSoup4模块
Python:requests库BeautifulSoup4库的基本使用(实现简单的网络爬虫)