from bs4 import BeautifulSoup
import urllib2
url = 'http://www.jb51.net/'
page = urllib2.urlopen(url)
スープ = BeautifulSoup(page,from_encoding="utf8")
print Soup.original_encoding
print (soup.title).encode(' gb18030')
file = open("title.txt","w")
file.write(str(soup. title))
file.close()
soup.find_all('a') のリンク:
print link['href']
最初にテストを開始したとき、出力は文字化けしていましたが、ファイルに書き込むのは正常であることがわかりました。その後、インターネットで解決策を探し、
内部的にオブジェクトを出力するロジックを見つけました。オブジェクトの __str__ は、対応する文字列を取得するために呼び出されます。ここでの対応するものは __str__ です。スープ自体に関しては、実際には既に Unicode エンコーディングになっているため、__str__ を指定してエンコーディングを GBK として出力できます。文字化けした中国語
は、ここでは正しく表示されます。 cmd: (中国語システムでは) は GBK としてエンコードされているため、gb18030 に再エンコードされている限り、正常に出力できます。
これは次のコード行です。
コードをコピーします コードは次のとおりです:
print (soup.title).encode('gb18030')
解決策 2:
BeautifulSoup が utf-8 でエンコードされた Web ページを解析するときに、fromEncoding が指定されていない場合、または fromEncoding が utf-8 に指定されている場合、中国語の文字化けが表示されます。
この問題を解決する方法は、Beautifulsoup コンストラクターで fromEncoding パラメーターの値を次のように指定することです。 gb18030
コードをコピーします コードは次のとおりです。
import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen('http://www.jb51.net/');
soup = BeautifulSoup(page,fromEncoding="gb18030")
printSoup.originalEncoding
printSoup .prettify()