2017-05-05 9 views
0

私が照会するRESTful APIからJSON応答を取得します。 URLを入れても、JSONの代わりにHTMLレスポンスが得られます。すべてのHTMLを解析せずにJSONレスポンスをまっすぐに得ることができればいいと思います。これを行う方法はありますか?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を使用します。

4- get(key)を使用して、辞書から抽出したいものを抽出します。

注:いくつかのステップを1つにまとめることはできますが、説明のために分けました。

ここでは正規の辞書get()を使用しましたが、jsonライブラリを使用する場合は、インポートしてからdumps()関数を使用して辞書からJSON形式の文字列を作成し、ここから続ける必要があります。

関連する問題