2011-11-13 15 views
26

मान लें कि मेरे पास div वाला एक पृष्ठ है। मैं आसानी से उस div को soup.find() के साथ प्राप्त कर सकता हूं।सुंदर सूप आंतरिक एचटीएमएल?

अब मैं परिणाम है कि, मैं मुद्रित करने के लिए है कि div के पूरे innerhtml चाहते हैं: वास्तव में स्ट्रिंग मैं था की तरह, मेरा मतलब है, मैं सभी HTML टैग और पाठ सब toegether साथ एक स्ट्रिंग आवश्यकता होगी obj.innerHTML के साथ जावास्क्रिप्ट में प्राप्त करें। क्या यह संभव है?

innerhtml = "".join([str(x) for x in div_element.contents]) 

उत्तर

11

विकल्पों में से एक कुछ है जो की तरह उपयोग हो सकता है। शायद किसी को दस्तावेज़ अपडेट करना चाहिए?

+1

यूनिकोड (एक्स) सुरक्षित –

+1

हो सकता है इस के साथ कुछ अन्य समस्याएं हैं। सबसे पहले यह स्ट्रिंग तत्वों के भीतर एचटीएमएल इकाइयों (जैसे कि उससे अधिक और उससे कम) से बच नहीं आता है। दूसरा, यह टिप्पणियों की सामग्री लिखेंगे लेकिन टिप्पणी टैग स्वयं ही नहीं। – ChrisD

+0

@ChrisD टिप्पणियों के लिए इसका उपयोग न करने का एक और कारण जोड़ना: यह गैर-ASCII वर्णों वाली सामग्री पर एक यूनिकोडडेकोड एरर फेंक देगा। – Anthon

29

वहाँ एक गैर-दस्तावेजी समारोह अनुमानित DOMs innerHTML method करता है वह यह है कि:

def innerHTML(element): 
    return element.decode_contents(formatter="html") 

यह अब तक मेरी सभी प्रकार के परीक्षण पारित किया है

+4

यह कुछ पात्रों को HTML इकाइयों में बदल देगा। हालांकि डिफ़ॉल्ट फॉर्मेटर ('none') के साथ ठीक काम करता है। – Tgr

+1

यह सही उत्तर है। @ peewhy का जवाब क्रिस डी के कारणों के लिए काम नहीं करता है। – dbkaplun

+2

ऐसा लगता है कि इसे थोड़ा अलग तर्कों के साथ 'रेंडरकंट्स' नाम दिया गया है '(एन्कोडिंग = DEFAULT_OUTPUT_ENCODING, सुंदरप्रिंट = गलत, इंडेंटवेल = 0) ' – highvolt

1

कैसे लगभग unicode(x)? लगता है मेरे लिए काम करता है।

संपादित करें: यह आपको बाहरी HTML देगा, न कि आंतरिक।

+0

कर दिया गया है, यह केवल बाहरी सामग्री सहित बाहरी तत्व सहित div को वापस कर देगा। – Arany

+0

आप सही हैं। अगर यह किसी और की मदद करता है तो इसे यहां छोड़कर। –

-1

आप केवल पाठ (HTML टैग्स) की जरूरत है, तो आप .text उपयोग कर सकते हैं:

soup.select("div").text 
संबंधित मुद्दे