我想從我查詢的RESTful API獲取JSON響應。我把網址,但我得到的是一個HTML響應,而不是JSON。如果我能夠直接獲得JSON響應,而不必解析所有的HTML,那將會很好。有沒有辦法做到這一點?Python Scrapy - 嘗試從RESTful API獲取JSON響應
注意:當我將URL放入瀏覽器時,它會以漂亮的可摺疊格式爲我提供帶有JSON數據的HTML網站。當我使用Python請求模塊發送GET請求時,它給了我JSON數據。我如何在Scrapy中實現同樣的功能?
我想從我查詢的RESTful API獲取JSON響應。我把網址,但我得到的是一個HTML響應,而不是JSON。如果我能夠直接獲得JSON響應,而不必解析所有的HTML,那將會很好。有沒有辦法做到這一點?Python Scrapy - 嘗試從RESTful API獲取JSON響應
注意:當我將URL放入瀏覽器時,它會以漂亮的可摺疊格式爲我提供帶有JSON數據的HTML網站。當我使用Python請求模塊發送GET請求時,它給了我JSON數據。我如何在Scrapy中實現同樣的功能?
在瀏覽器中打開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格式的字符串,並從此處繼續。