python-3.x - 无法使用 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
属性?
解决方案
您在 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
推荐阅读
- sql - 这可以计算吗?
- sql - PostgreSQL 只是将行转置/转换为列
- javascript - 使用带有 for in 循环的 async/await
- movesense - 如果 ResourceProvider 太大,则不发送响应
- html - 如果两个输入值与 jQuery 具有相同的值,则显示 DIV
- javascript - 如何在 JavaScript 中单击按钮
- python - 尝试使用 PiCAN2 和树莓派记录 CAN 数据时未找到数据
- mysql - MYSQL 计算列上的所有大小写
- c++ - 在c++程序下运行
- python - docker 上的内存使用量在容器 timeoutErrors 上达到峰值