2017-04-18 4 views
-3

Ich html Quellcode von vielen Seiten von einer Website abrufen, muss ich es in JSON-Objekt konvertieren und mit anderen Elementen in JSON Doc kombinieren. . Ich habe viele Fragen zum selben Thema gesehen, aber keine von ihnen war hilfreich.Convert HTML-Quellcode in JSON-Objekt

Mein Code:

url = "https://totalhash.cymru.com/analysis/?1ce201cf28c6dd738fd4e65da55242822111bd9f" 
htmlContent = requests.get(url, verify=False) 
data = htmlContent.text 
print("data",data) 
jsonD = json.dumps(htmlContent.text) 
jsonL = json.loads(jsonD) 

ContentUrl='{ \"url\" : \"'+str(urls)+'\" ,'+"\n"+' \"uid\" : \"'+str(uniqueID)+'\" ,\n\"page_content\" : \"'+jsonL+'\" , \n\"date\" : \"'+finalDate+'\"}' 

obige Code gibt mir Unicode-Typ, aber wenn ich diese Ausgabe in jsonLint setzen es gibt mir ungültig json Fehler. Kann mir jemand helfen zu verstehen, wie ich das komplette HTML in ein JSON-Objekt umwandeln kann?

+0

versuchen Kolben Module jsonify() Methode verwendet. –

+0

Die Quelle der URL gibt json nicht zurück. Um Elementwerte aus HTML zu holen, müssen Sie etwas wie BeautifulSoup oder lxml usw. verwenden. –

+0

Sie machen hier einige sehr seltsame Dinge. Warum würden Sie zu JSON dumpen, dann sofort laden und * dann * einen JSON-String manuell erstellen? –

Antwort

6

jsonD = json.dumps(htmlContent.text) wandelt den reinen HTML-Inhalt in eine JSON-Zeichenfolgendarstellung um. jsonL = json.loads(jsonD) analysiert die JSON-Zeichenfolge in einem regulären String/Unicode-Objekt. Dies führt zu einem No-Op, da ein Entweichen von dumps() durch loads() rückgängig gemacht wird. jsonL enthält die gleichen Daten wie htmlContent.text.

Try json.dumps zu benutzen, um Ihre endgültige JSON statt das JSON von Hand zu generieren:

ContentUrl = json.dumps({ 
    'url': str(urls), 
    'uid': str(uniqueID), 
    'page_content': htmlContent.text, 
    'date': finalDate 
}) 
+0

Es funktionierte wie Charme. Danke, dass du mein Verständnis auch verbessert hast. Ich habe auf "Antwort annehmen" geklickt, habe aber keine Ahnung, warum es nicht funktioniert –