簡體   English   中英

如何使用python解析ld+json

[英]How to parse ld+json using python

我一直在嘗試一些網絡抓取,我發現了一些位於這個標簽內的有趣數據:

<script type="application/ld+json">

我已經能夠使用美麗的湯來隔離那個標簽

html = urlopen(url)
soup = BeautifulSoup(html, "lxml")

p = soup.find('script', {'type':'application/ld+json'})
print p

但我無法處理數據或從該標簽中提取任何數據。

如果我嘗試使用正則表達式從中獲取一些東西,我會得到:

TypeError: expected string or buffer

我怎樣才能從那個腳本標簽中獲取數據並像使用字典或字符串一樣使用它? 順便說一下,我正在使用 python 2.7。

您應該使用json.loads讀取 JSON 以將其轉換為字典。

import json

import requests
from bs4 import BeautifulSoup

def get_ld_json(url: str) -> dict:
    parser = "html.parser"
    req = requests.get(url)
    soup = BeautifulSoup(req.text, parser)
    return json.loads("".join(soup.find("script", {"type":"application/ld+json"}).contents))

join / contents組合刪除了腳本標簽。

你應該閱讀 html 來解析

html = urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")
p = soup.find('script', {'type':'application/ld+json'})
print p.contents

上面的評論沒有幫助(雖然謝謝)

最后我用了:

p = str(soup.find('script', {'type':'application/ld+json'}))

我強迫它變成一個不太漂亮的字符串,但它完成了工作。 我知道那里可能有更好的出路,但這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM