![](/img/trans.png)
[英]How to extract or Scrape data from HTML page but from the element itself
[英]How can I scrape JSON data from a HTML page source?
我正在嘗試從在線音樂數據庫中提取一些數據。 特別是,我想提取您可以使用 CTRL+F 找到的這些數據——“isrc”:“GB-FFM-19-0853”。
查看源代碼:https ://www.audionetwork.com/browse/m/track/purple-beat_1008534
我正在使用 Python 和 Selenium,並嘗試通過標簽、xpath 和 id 等方式定位數據,但似乎沒有任何效果。
我以前沒有見過這種 x:y 格式,一些搜索讓我覺得它是 JSON 格式。
有沒有辦法通過 Selenium 獲取 isrc 數據? 我需要通用的方法(即適用於具有不同 isrc 值的頁面,因為每個音樂曲目都有不同的)。
到目前為止我的代碼...
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from time import sleep
import os
# Access AudioNetwork and search for tracks.
path = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(path)
driver.get("https://www.audionetwork.com/track/searchkeyword")
search = driver.find_element(By.ID, "js-keyword")
search.send_keys("ANW3175_001_Purple-Beat.wav")
search.send_keys(Keys.RETURN)
sleep(5)
music_link = driver.find_element(By.CSS_SELECTOR, "a.track__title")
music_link.click()
我知道我需要更好地等待/可能是代碼的其他問題,但是關於如何獲取該 ISRC 號碼的任何想法?
是的,這是 JSON 格式。 它實際上是包裹在 HTML 腳本標簽內的 JSON。 它本質上是一個“鍵”:“值”對-因此您概述的特定內容(“isrc”:“GB-FFM-19-08534”)具有 isrc 鍵,值為 GB-FFM-19-08534 .
Python 有一個解析 JSON 的庫,我想你可能想要這個 - https://www.w3schools.com/python/gloss_python_json_parse.asp 。 讓我知道這是否適合你。
如果你想找到 isrc 的值,你可以這樣做:
import json
... # your code here
jsonString = json.loads(someValueHere)
isrcValue = jsonString["isrc"]
用您正在解析的 json 字符串替換 someValueHere,這應該會有所幫助。 我認為 isrc 是嵌套的,所以它可能不是那么簡單。 我不認為你可以在 python 中只做 jsonString["track.isrc"],但我不確定......你正在尋找的路徑是 props.pageProps.track.isrc。 您可能必須為每層分配一個變量...
jsonString = json.loads(someValueHere)
propsValue = jsonString["props"]
pagePropsValue = propsValue["pageProps"]
trackValue = pagePropsValue["track"]
isrcValue = trackValue["isrc"]
您想將整個腳本提取為 JSON 數據(可以在 python 中作為字典讀取)並搜索“isrc”參數。
以下代碼使用 selenium 來提取頁面內的腳本內容,將其解析為 json 並將“isrc”值打印到終端。
from selenium import webdriver
from selenium.webdriver.common.by import By
import json
driver = webdriver.Chrome()
driver.get("https://www.audionetwork.com/browse/m/track/purple-beat_1008534")
search = driver.find_element(By.XPATH, "/html/body/script[1]")
content = search.get_attribute('innerHTML')
content_as_dict = json.loads(content)
print(content_as_dict['props']['pageProps']['track']['isrc'])
driver.close()
driver.quit()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.