使用Python3+Beautiful Soup从多元素HTML中提取data-ppu值失败如何解决
问题原因
你代码有两个明显问题:
find()方法的第一个参数是用来查找匹配的HTML标签名,而data-ppu是<input>标签的自定义属性,不是标签名称,因此自然无法检索到结果。- 循环变量和外层遍历的
trade_data重名,会引发逻辑异常,建议修改循环变量名避免冲突。
解决方案
BeautifulSoup中提取标签属性的逻辑是:先定位到目标标签对象,再通过下标或者get()方法读取对应属性值。
你可以根据你的trade_data实际结构选择对应写法:
情况1:trade_data中的每个元素是包含目标input的上层节点
for index, trade_item in enumerate(trade_data): # 先定位class为tradeForm的input标签 target_input = trade_item.find('input', class_='tradeForm') # 提取data-ppu属性,get方法在属性不存在时会返回None,不会抛异常 price = target_input.get('data-ppu') print(price)
情况2:trade_data中的每个元素本身就是目标input标签对象
for index, trade_item in enumerate(trade_data): price = trade_item.get('data-ppu') print(price)
运行上述代码就能输出你需要的3893结果。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

