2017-05-05 57 views
0

我想從我查詢的RESTful API獲取JSON響應。我把網址,但我得到的是一個HTML響應,而不是JSON。如果我能夠直接獲得JSON響應,而不必解析所有的HTML,那將會很好。有沒有辦法做到這一點?Python Scrapy - 嘗試從RESTful API獲取JSON響應

注意:當我將URL放入瀏覽器時,它會以漂亮的可摺疊格式爲我提供帶有JSON數據的HTML網站。當我使用Python請求模塊發送GET請求時,它給了我JSON數據。我如何在Scrapy中實現同樣的功能?

回答

0

在瀏覽器中打開JSON文件,右鍵單擊它並選擇「檢查」。看看哪些標籤包含它;它可以直接在<body>或其他標籤中。

我們假設它在<script>標記中;這裏是代碼。 (這將有助於多,如果你寄給我們的樣品頁。)

import ast 

# Scrapy code here 

text = response.xpath('//script/text()').extract_first() 
text = text.strip() 
text = ast.literal_eval(text) 

value = text.get("key") 

1-提取<script>標籤(或任何標記括起來)之間的JSON的一部分。

2-使用鋼帶去除多餘的空間。

3-使用ast.literal_eval將unicode轉換爲字典。

4-使用get(key)提取您想要從字典中提取的內容。

注意:您可以將幾個步驟合併爲一個,但爲了解釋目的我將它們分開。

這裏我使用了常規字典get(),但是如果要使用json庫,則必須先導入它,然後使用dumps()函數從字典創建一個JSON格式的字符串,並從此處繼續。