2017-08-18 40 views
0

在頁面https://bittrex.com/api/v2.0/pub/Markets/GetMarketSummaries我試圖解析文本,我拉與請求。我使用拉文本的代碼是在這裏從頁面解析文本到BS4

import requests 
from bs4 import BeautifulSoup 

link = 'https://bittrex.com/api/v2.0/pub/Markets/GetMarketSummaries' 
html = requests.get('https://bittrex.com/api/v2.0/pub/Markets/GetMarketSummaries').text 
print(html) 

我可以很容易把所有的文字從頁,但現在我想和BS4來分析它,使它只得到特定貨幣的數量,如ADX或ADT。 (顯示爲「MarketCurrency」:「ADX」) 我希望它能夠從頁面中找到諸如「高」,「低」,「卷」和「最後」之類的信息,而無需拉動所有其他垃圾。因此,例如,我輸入我想要的貨幣代碼,例如:ADX,然後解析該文本並僅打印高,低,量和當天最後一天的數字。謝謝你的幫助!

+1

該API似乎返回JSON,而不是HTML。 BeautifulSoup是一個HTML解析器;對於JSON,您可以使用本機python JSON解析器:https://docs.python.org/2/library/json.html – Hamms

+0

任何想法開始然後,對不起,我很新的 –

+0

開始解析結果從JSON的API到Python字典,你可以在這裏瞭解更多關於http://introtopython.org/dictionaries.html – Hamms

回答

0

其實,你很接近。正如評論所說,輸出不是HTML,而是JSON。幸運的是python有一些很好的內置功能。以下代碼將解析網站的JSON文本輸出爲本機Python字典(json_dict)。

import requests 
import json 

link = 'https://bittrex.com/api/v2.0/pub/Markets/GetMarketSummaries' 
raw_json = requests.get('https://bittrex.com/api/v2.0/pub/Markets/GetMarketSummaries').text 
json_dict = json.loads(raw_json) 
print(json_dict) 
+0

感謝這一點,現在的問題是,它不是所有的多個字典都具有相同的變量。 ex是在整個頁面上重複的「BaseCurrency」,那麼最好的辦法是隻引入我們想要的那個? –

+0

您必須得到關鍵字「結果」的值,該結果是每個都有市場摘要的字典列表。然後,您將不得不遍歷這個列表並按照您的意願處理每個字典。它只適用於Python列表和字典。 – somil