का उपयोग कर जापानी अक्षरों को सही ढंग से स्क्रैपिंग और प्रदर्शित करना मैं पाइथन, कर्ल और सुंदर सूप का उपयोग करके जापानी में एक पृष्ठ को स्क्रैप करने की कोशिश कर रहा हूं। मैं फिर पाठ को एक MySQL डेटाबेस में सहेजता हूं जो utf-8 एन्कोडिंग का उपयोग कर रहा है, और Django का उपयोग कर परिणामी डेटा प्रदर्शित करता है।पाइथन Django सुंदर सूप और कर्ल
मैं एक समारोह मैं एक स्ट्रिंग के रूप एचटीएमएल निकालने के लिए उपयोग किया है::
def get_html(url):
c = Curl()
storage = StringIO()
c.setopt(c.URL, str(url))
cookie_file = 'cookie.txt'
c.setopt(c.COOKIEFILE, cookie_file)
c.setopt(c.COOKIEJAR, cookie_file)
c.setopt(c.WRITEFUNCTION, storage.write)
c.perform()
c.close()
return storage.getvalue()
मैं तो BeautifulSoup को इसे पारित:
यहाँ एक उदाहरण यूआरएल है
html = get_html(str(scheduled_import.url))
soup = BeautifulSoup(html)
इसे तब पार्स किया गया है और इसे डेटाबेस में सहेजा गया है। मैं जेसन को डेटा आउटपुट करने के लिए Django का उपयोग करता हूं।
def get_jobs(request):
jobs = Job.objects.all().only(*fields)
joblist = []
for job in jobs:
job_dict = {}
for field in fields:
job_dict[field] = getattr(job, field)
joblist.append(job_dict)
return HttpResponse(dumps(joblist), mimetype='application/javascript')
परिणाम पृष्ठ पर बाईटकोड जैसे::
XE3 \ x82 \ xb7 \ XE3 \ x83 \ xa3 \ XE3 \ x83 \ XAA \ XE3 \ x82 \ यहाँ दृश्य मैं उपयोग कर रहा हूँ है xb9 \ xe3 \ x83 \ x88
\ xe8 \ x81 \ xb7 \ xe5 \ x8b \ x99 \ xe5 \ x86 \ x85 \ xe5 \ xae \ xb9
\ xe3 \ x82 \ xb7 \ xe3 \ x82 \ xb9 \ xe3 \ x82 \ xb3 \ XE3 \ x82 \ xb7 \ XE3 \ x82 \ XB9 \ XE3 \ x83 \ x86 \ XE3 \ x83 \ xa0 \ XE3 \ x82 \ xba \ XE3 \ x81 \ xAE \ XE3 \ x82 \ xb3 \ XE3 \ x83 कॉपीराइट \ xA9 \ XE3 \ x83 \ x9c \ XE3 \ x83 \ XAC \ XE3 \ x83 \ XBC \ XE3 \ x82 \ xb7 \ XE3 \ x83 \ xa7 \ XE3 \ x83 \ xb3 \ XE4 \ xba \ x8b \ XE6 \ xa5 \ xad \ xe9 \ x83 \ xa8 \ XE3 \ x81 \ xa7 \ XE3 \ x81 \ XAF \ XE3 \ x80 \ x81 \ XE4 \ xba \ xba \ XE3 \ x82 \ x92 \ XE4 \ xb8 \ xad \ xe5 \ xbf \ x83 \ XE3 \ x81 \ xa8 \ XE3 \ x81 \ x97 \ XE3 \ x81 \ x9f \ XE3 \ x82 \ xb3 \ XE3 \ x83 \ x9f \ XE3 \ x83 \ Xa5 \ XE3 \ x83 \ x8b \ XE3 \ x82 \ xb1 \ XE3 \ x83 \ XBC \ XE3 \ x82 \ xb7 \ XE3 \ x83 \ xa7 \ XE3 \ x83 \ xb3 \ XE3 \ x81 \ xab \ XE3 \ x82 \ x88 \ xe3 \ x82 \ x8a \ xe3 \
जापानी के बजाय।
मैं पूरे दिन शोध कर रहा हूं और अपना डीबी यूटीएफ -8 में परिवर्तित कर चुका हूं, आईएसओ -885 9 -1 से पाठ को डीकोड करने और यूटीएफ -8 में एन्कोडिंग करने का प्रयास किया है।
असल में मुझे नहीं पता कि मैं क्या कर रहा हूं और किसी भी मदद या सुझाव की सराहना करता हूं ताकि मैं इसे समझने की कोशिश कर रहा हूं।
आप खूबसूरत सूप को एन्कोडिंग बताना भूल गए। इसे प्रतिक्रिया शीर्षकों से प्राप्त करें। –
मेरा मानना है कि सुंदरता सूप स्वचालित रूप से पेज के मेटा टैग के आधार पर एन्कोडिंग सेट करता है, इस http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html "ए टैग दस्तावेज़ के लिए एन्कोडिंग निर्दिष्ट कर सकता है। " और soup.originalEncoding आउटपुट 'iso-8859-1' –
आप मान रहे हैं कि पृष्ठ * पढ़ने के लिए एक मेटा टैग है। इस मामले में –