2017-04-18 55 views
-3

我從一個網站獲取許多網頁的html源代碼,我需要將其轉換爲json對象並與json doc中的其他元素結合使用。 。我看過很多關於同一主題的問題,但其中沒有一個是有幫助的。將html源代碼轉換爲json對象

我的代碼:

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+'\"}' 

上面的代碼給我unicode的類型,但是,當我把輸出jsonLint它給了我無效JSON錯誤。有人可以幫助我理解如何將完整的HTML轉換爲json objet?

+0

嘗試使用燒瓶模塊jsonify()方法。 –

+0

網址的來源不會返回json。要從HTML獲取元素值,你需要使用像BeautifulSoup或lxml等等 –

+0

你在這裏做了一些非常奇怪的事情。你爲什麼要轉儲到JSON,然後立即加載,然後*然後*手動建立一個JSON字符串? –

回答

6

jsonD = json.dumps(htmlContent.text)將原始HTML內容轉換爲JSON字符串表示形式。 jsonL = json.loads(jsonD)將JSON字符串解析回常規字符串/ unicode對象。這導致無操作,因爲由dumps()完成的任何轉義恢復爲loads()jsonL包含與htmlContent.text相同的數據。

嘗試使用json.dumps來產生,而不是由手工打造的JSON最終JSON:

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

它像魅力一樣工作。感謝您讓我的理解更好。我點擊接受答案,但不知道爲什麼它不起作用 –