所以我試圖從這個網頁中決議資料
但我不需要整個資料集,我只需要:
- 運營商名稱(Google、CloudFlare 等)
- 描述(谷歌“Argon2022”日志、谷歌“Argon2023”日志等)
- 日志 ID (
KXm 8J45OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4Q=)
我試圖撰寫一些代碼,但我只是網路抓取的初學者,所以想知道是否有人可以提供幫助。這是我嘗試的代碼,我嘗試使用 lxml 和 requests 庫。
import requests
from lxml import html
page = requests.get('https://chromium.googlesource.com/chromium/src/ /main/components/certificate_transparency/data/log_list.json')
tree = html.fromstring(page.content)
#This will create a list of operators:
operators = tree.xpath('//span[@]/text()')
print('Operators: ',operators)
我希望最終結果看起來像網站上的 JSON 減去所有不需要的資訊,因此運營商:
[
{ "name": "Google",
"logs": [
{ description: "Google Argon2022 log",
log_id: "KXm 8J45OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4Q=" },
{ description: "GoogleArgon2023 log",
log_id: "6D7Q2j71BjUy51covIlryQPTy9ERa zraeF3fW0GvW4=" }
}
....
{ "name": "CloudFlare",
"logs": [ ... ]
}
]
uj5u.com熱心網友回復:
首先,您要訪問原始檔案,而不是 UI。就像 Kache 提到的那樣,您可以使用以下方法獲取 JSON:
resp = requests.get('https://chromium.googlesource.com/chromium/src/ /main/components/certificate_transparency/data/log_list.json?format=TEXT')
obj = json.loads(base64.decodebytes(resp.text.encode()))
然后,您可以使用以下腳本僅提取您想要的資料:
import requests
import json
import base64
def extract_log(log):
keys = [ 'description', 'log_id' ]
return { key: log[key] for key in keys }
def extract_logs(logs):
return [ extract_log(log) for log in logs ]
def extract_operator(operator):
return {
'name': operator['name'],
'logs': extract_logs(operator['logs'])
}
def extract_certificates(obj):
return [ extract_operator(operator) for operator in obj['operators'] ]
def scrape_certificates(url):
resp = requests.get(url)
obj = json.loads(base64.decodebytes(resp.text.encode()))
return extract_certificates(obj)
def main():
out = scrape_certificates('https://chromium.googlesource.com/chromium/src/ /main/components/certificate_transparency/data/log_list.json?format=TEXT')
print(json.dumps(out, indent=4))
if __name__ == '__main__':
main()
uj5u.com熱心網友回復:
右下角有一個鏈接可讓您直接下載檔案: https ://chromium.googlesource.com/chromium/src/ /main/components/certificate_transparency/data/log_list.json?format=JSON
這可以讓您完全避免 HTML 決議。
這是將其提取為的 Python 代碼dict:
resp = requests.get('https://chromium.googlesource.com/chromium/src/ /main/components/certificate_transparency/data/log_list.json?format=TEXT')
js = json.loads(base64.decodebytes(resp.text.encode()))
您的問題剩下的涉及 JSON 和dict遍歷和基本編碼,您應該能夠在其他問題中找到答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490914.html
