2016-05-26 10 views
0

Indeeds APIを使用してジョブリストをスクラップしています。彼らのAPIは1コールにつき25の結果しか得られないので、範囲を反復する必要があります。JSON値をAPIコールから抽出して変数として使用する

私のnumresults変数として使用する、返される結果の数(範囲の場合)を知る必要があります。今はブラウザで同じ検索を行い、手動で結果を入力しています。

複数の国や検索用語を繰り返し処理したいので、JSONにあるnumresultsに "totalResults"という値を渡す必要があります。

この値を抽出する方法がわかりません。

コールの後すぐにこれを行うことができますか(JSONはどこに保存されますか)、最初にJSONファイルを作成する必要はありますか?ここで

は私の作業スクレーパーである:ここでは

import requests 
api_url = 'http://api.indeed.com/ads/apisearch? publisher=XXXXXXXXXXX&v=2&limit=100000&format=json' 
Country = 'au' 
SearchTerm = 'Insight' 
number = -25 
numresults = 3925 
# must match the actual number of job results to the lower of the 25 increment or the last page will repeat over and over 
#so if there are 392 results, then put 375 

for number in range(-25, numresults, 25): 
    url = api_url + '&co=' + Country + '&q=' + SearchTerm + '&start=' + str(number + 25) 
    response = requests.get(url) 
    f = open(SearchTerm + '_' + Country +'.json','a') 
    f.write (response.content) 
    f.close() 
    print 'Complete' , url 

返されるJSONのサンプルです:

{ 
    "version" : 2, 
    "query" : "Pricing", 
    "location" : "", 

    "dupefilter" : true, 

    "highlight" : true, 

    "start" : 1, 
    "end" : 25, 
    "totalResults" : 1712, 

    "pageNumber" : 0, 


    "results" : [ 

       { 
        "jobtitle" : "New Energy Technical Specialist", 
        "company" : "Rheem", 
        etc. 

答えて

0

PythonのJSONモジュールを使用しないのはなぜ?

import json 
# inside the loop, after the request. 
json_content = json.loads(r.content) 
print(json_content["version"]) # should display 2 

リクエストによって返されるコンテンツが本当にjson形式であることを確認してください。ドキュメントはここにあります:https://docs.python.org/2/library/json.html

+0

ありがとうございました。私はそのモジュールを使用しようとしていましたが、何らかの理由であなたの例が見えるまで正しくできませんでした。 –

+0

問題はありませんが、負荷と負荷の違いについても注意してください(最後のs)。答えが=であれば解決した問題に印を付けることを忘れないでください) – SnoozeTime