首页 > 解决方案 > 无法使用 BeautifulSoup 从隐藏标签中刮取“价值”

问题描述

我试图从这个链接中刮掉 6,550 英镑的基本价格:https ://www.plates4less.co.uk/private-plate_o/CSG1S它位于一个名为的隐藏输入中BasePrice,当我查看页面源“6550”时在一个名为的属性中value

<input type="hidden" name="BasePrice" id="BasePrice" value="6550">

我的代码是:

url = 'https://www.plates4less.co.uk/private-plate_o/CSG1S'
req = session.get(url, headers=headers)
bsObj = BeautifulSoup(req.text, features="html.parser")
price = bsObj.find("input", {"name" : {"BasePrice"}})
print(price['value'])

但它返回KeyError: 'value'

当我运行这个(即检索标签但没有尝试访问“值”时:

url = 'https://www.plates4less.co.uk/private-plate_o/CSG1S'
req = session.get(url, headers=headers)
bsObj = BeautifulSoup(req.text, features="html.parser")
price = bsObj.find("input", {"name" : {"BasePrice"}})
print(price)

我明白了:

<input id="BasePrice" name="BasePrice" type="hidden"/>

为什么我注意到能够访问该value属性?

标签: python-3.xweb-scrapingbeautifulsoup

解决方案


您在 paga 上看到的数据是从外部 URL 加载的。要加载基本价格,您可以使用以下示例:

import json
import requests

# CSG1S is from your base URL
url = "https://www.plates4less.co.uk/apiv3/TransferOptions/CSG1S"

data = requests.get(url).json()

# uncomment to see all data:
# print(json.dumps(data, indent=4))

print(data["data"]["registrationNumber"]["displayedBPrice"])

印刷:

6550.0

推荐阅读