Schreiben Sie JSON-Elemente in csv-Datei python

Ich habe gerade ein Python-Programm, das Google Webmaster API kratzt, um zu überprüfen, ob die target_site mobil ist freundlich oder nicht & dann basiert auf Antwort es extrahiert bestimmte Json Elemente. Auch erfaßt es den Screenshot im lokalen Ordner

Das Skript funktioniert gut, aber wenn ich versuche, diese json-Objekte zu csv-Datei zu schreiben, funktioniert es nicht.

Hier ist mein Code: –

import requests, json, string, random, time import csv from base64 import decodestring from random import randint #links = open(r'D:\\Carlos\\Links.txt') links = ['https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?key=AIzaSyDkEX-f1JNLQLC164SZaobALqFv4PHV-kA&screenshot=true&snapshots=true&locale=en_US&url=https://www.economicalinsurance.com/en/&strategy=mobile&filter_third_party_resources=false', 'https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?key=AIzaSyDkEX-f1JNLQLC164SZaobALqFv4PHV-kA&screenshot=true&snapshots=true&locale=en_US&url=http://www.volkswagen-me.com/en-vwme/service/protection/motor-insurance.html&strategy=mobile&filter_third_party_resources=false'] def id_generator(size=6, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) i = 12 def get_data(each): try: r = requests.get(each) except: pass #time.sleep(randint(1, 3)) try: json_data = json.loads(r.text) except: pass try: score = json_data['ruleGroups']['USABILITY']['score'];score=int(score) except: pass try: Pass = json_data['ruleGroups']['USABILITY']['pass'];Pass=str(Pass) except: pass try: ConfigureViewport = json_data['formattedResults']['ruleResults']['ConfigureViewport']['localizedRuleName'];ConfigureViewport=str(ConfigureViewport) except: pass try: UseLegibleFontSizes = json_data['formattedResults']['ruleResults']['UseLegibleFontSizes']['localizedRuleName'];UseLegibleFontSizes=str(UseLegibleFontSizes) except: pass try: AvoidPlugins = json_data['formattedResults']['ruleResults']['AvoidPlugins']['localizedRuleName'];AvoidPlugins=str(AvoidPlugins) except: pass try: SizeContentToViewport = json_data['formattedResults']['ruleResults']['SizeContentToViewport']['localizedRuleName'];SizeContentToViewport=str(SizeContentToViewport) except: pass try: SizeTapTargetsAppropriately = json_data['formattedResults']['ruleResults']['SizeTapTargetsAppropriately']['localizedRuleName'];SizeTapTargetsAppropriately=str(SizeTapTargetsAppropriately) except: pass try: AvoidInterstitials = json_data['formattedResults']['ruleResults']['AvoidInterstitials']['localizedRuleName'];AvoidInterstitials=str(AvoidInterstitials) except: pass try: image_link = json_data['screenshot']['data']; image_link = image_link.replace("_", "/").replace("-","+") except: pass #try: id_generator_name = "".join( [random.choice(string.letters) for i in xrange(15)] )+'.jpeg' #except: # pass #try: fh = open(id_generator_name, "wb") #except: # pass try: fh.write(str(image_link).decode('base64')) time.sleep(1) except: pass try: fh.close() except: pass try: error_code = json_data['error']['message'];error_code=str(error_code) except: pass try: print each, score, Pass, ConfigureViewport, UseLegibleFontSizes, AvoidPlugins, SizeContentToViewport, SizeTapTargetsAppropriately, AvoidInterstitials, error_code except: pass try: writer.writerow({'each':each, 'score':score, 'Pass':Pass, 'ConfigureViewport':ConfigureViewport, 'UseLegibleFontSizes':UseLegibleFontSizes, 'AvoidPlugins':AvoidPlugins, 'SizeContentToViewport':SizeContentToViewport,'SizeTapTargetsAppropriately':SizeTapTargetsAppropriately, 'AvoidInterstitials':AvoidInterstitials, 'error_code':error_code,'imagename':id_generator_name}) except: pass #path to the csv file with open("D:\Carlos\Data_file\output.csv", "ab")as export: fieldnames = ['each', 'score', 'Pass', 'ConfigureViewport', 'UseLegibleFontSizes', 'AvoidPlugins', 'SizeContentToViewport', 'SizeTapTargetsAppropriately', 'AvoidInterstitials', 'error_code','imagename'] writer = csv.DictWriter(export, fieldnames=fieldnames) writer.writeheader() for each in links: #try: get_data(each) #except: # pass 

Bitte raten Sie, wie Sie auf csv schreiben? Oder wo die Dinge im Code falsch sind?

  • Super mit einer Klassenmethode verwenden
  • Berechnen des Prozentsatzes der Bounding-Box-Überlappung, für die Bilddetektorauswertung
  • Erstellen einer Liste von Objekten aus einer Liste von Listen
  • Was ist diese "und" Aussage tatsächlich in der Rückkehr?
  • TensorFlow Object Detection API Weird Verhalten
  • Wie kann ich eine Kopie eines 2D-Arrays in Python erstellen?
  • Ist es möglich, ein Objekt einer Klasse auf zwei verschiedene Arten zu instanziieren?
  • Verwenden von self.xxxx als Standardparameter - Python
  • One Solution collect form web for “Schreiben Sie JSON-Elemente in csv-Datei python”

    Ich mag Pandas Dataframes dafür verwenden, aber es kann übertrieben sein, wenn man Pandas sonst nicht benutzen würde. Pandas Dataframes sind auch ideal für Analyse und Vergleich.

    Sie würden den JSON in ein Dataframe setzen und dann das Dataframe an eine CSV-Datei ausgeben.

     import pandas as pd df = pd.read_json('path/to/json/file') df.to_csv('filename.csv') 

    Beachten Sie, dass es nur so einfach ist, wenn Ihr JSON eine Ebene hat und könnte auch ein csv sein. Ansonsten müssteest du den JSON in einen Dict lesen, auf die entsprechende Ebene navigieren und dann in einen Dataframe lesen.

    http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html

    http://pandas.pydata.org/

    Python ist die beste Programmiersprache der Welt.