我正在尝试使用BeautifulSoup提取Python3中(@context
)的'script', type='application/ld+json'
元素中的文本。
我在一页内有多个脚本,我想获取上面json中列出的特定功能。
我尝试使用此代码:
data = soup.find_all('script', type='application/ld+json')
print(data)
这为我提供了所有脚本的完整摘录内容,但我想在每个脚本的上下文中获得特定功能。
功能示例:
{"name":"test","telephone":"600.212.0000","url":"https://test.com/test"}
在此示例中,我想获得"url"
部分。
有人知道要用Python做吗?
非常感谢您的帮助。
答案 0 :(得分:0)
由于您的功能是字典,因此您可以尝试以下操作:
feature = {"name":"test","telephone":"600.212.0000","url":"https://test.com/test"}
print(feature["url"])
答案 1 :(得分:0)
您可以对get()
使用列表推导:
data = soup.find_all('script', type='application/ld+json')
urls = [i.get('url') for i in data]
答案 2 :(得分:0)
其他答案中缺少的是将从 script 标签中提取的内容转换为 JSON(我们可以使用 json 库),然后只需从 dict 中选择我们感兴趣的字段。
import requests, json
from bs4 import BeautifulSoup
src = requests.get("YOUR_URL").content
soup = BeautifulSoup(src,'html.parser')
res = soup.find('script', type='application/ld+json')
json_object = json.loads(res.contents[0])
print(json_object['url'])