2016-05-26 7 views
0

Ich verwende Indeeds API, um Jobauflistungen zu scraphen. Ihre API erlaubt nur 25 Ergebnisse pro Aufruf, deshalb muss ich den Bereich durchlaufen.JSON-Wert aus API-Aufruf extrahieren, um als Variable zu verwenden

Ich muss wissen, die Anzahl der zurückgegebenen Ergebnisse (für den Bereich), um meine Numesults Variable zu verwenden. Im Moment mache ich nur die gleiche Suche in meinem Browser und gebe das Ergebnis manuell ein.

Ich möchte mehrere Länder oder Suchbegriffe durchlaufen, also muss ich den Wert "totalResults" zu numresults übergeben, die in der JSON gefunden wird.

Das Problem ist, ich verstehe nicht, wie man diesen Wert extrahiert.

Kann ich dies direkt nach dem Anruf tun (wo würde der JSON gespeichert werden) oder muss ich zuerst die JSON-Datei erstellen?

Hier sind meine Arbeits Scraper:

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 

Hier ist ein Beispiel des JSON zurückgegeben:

{ 
    "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. 

Antwort

0

Warum nicht den Python json-Modul verwenden?

Seien Sie vorsichtig, überprüfen Sie, bevor der Inhalt der Anfrage tatsächlich im JSON-Format zurückgegeben wird. Das Dokument ist hier: https://docs.python.org/2/library/json.html

+0

Danke, ich habe versucht, dieses Modul zu verwenden, aber aus irgendeinem Grund konnte es nicht richtig, bis ich Ihr Beispiel sah. –

+0

Kein Problem, achten Sie auch auf den Unterschied zwischen Lasten und Last (die letzten s). Und vergessen Sie nicht, die Frage zu markieren, wenn sie beantwortet wird =) – SnoozeTime

Verwandte Themen