私は、特定のサイトのすべての見出しを特定して保存しようとしていますが、私はエンコーディングエラーであると考えています。BeautifulSoup中国語文字エンコーディングエラー
サイトがある:http://paper.people.com.cn/rmrb/html/2016-05/06/nw.D110000renmrb_20160506_2-01.htm
現在のコードは次のとおりです。
holder = {}
url = urllib.urlopen('http://paper.people.com.cn/rmrb/html/2016-05/06/nw.D110000renmrb_20160506_2-01.htm').read()
soup = BeautifulSoup(url, 'lxml')
head1 = soup.find_all(['h1','h2','h3'])
print head1
holder["key"] = head1
プリントの出力は次のようになります。
[<h3>\u73af\u5883\u6c61\u67d3\u6700\u5c0f\u5316 \u8d44\u6e90\u5229\u7528\u6700\u5927\u5316</h3>, <h1>\u5929\u6d25\u6ee8\u6d77\u65b0\u533a\uff1a\u697c\u5728\u666f\u4e2d \u5382\u5728\u7eff\u4e2d</h1>, <h2></h2>]
私はそれらがUnicode文字であることを合理的に確信しています、 Pythonに文字として表示する方法を理解することはできませんでした。
私は他の場所で答えを見つけようとしました。ポイントについてより明確にした質問だったこの1:追加提案 Python and BeautifulSoup encoding issues
しかし私のコメントに記載されている同じエラー( "はAttributeError与えた
soup = BeautifulSoup.BeautifulSoup(content.decode('utf-8','ignore'))
:型オブジェクトのBeautifulSoup」を2番目の '.BeautifulSoup'を削除すると、別のエラーが発生しました( "RuntimeError:Pythonオブジェクトの呼び出し中に最大再帰深度を超えました")。オブジェクト
html = urllib2.urlopen("http://www.515fa.com/che_1978.html")
content = html.read().decode('utf-8', 'ignore')
soup = BeautifulSoup(content)
の作成を壊すことで Chinese character encoding error with BeautifulSoup in Python?
が、それはまた、再帰エラーが発生した:
私も答えはここに提案してみました。他のヒントがあれば幸いです。
おかげ
ああ、これはとても近いです!これは、そのデータが正しいことを希望するテキストを印刷するために働く。しかし、辞書に追加しようとすると、ユニコードに戻りました。 g = soup.h3.text.encode( "utf-8")。decode( "unicode-escape") 'と' print(g) 'のようにステップ9を少し壊しました。それはうまくいった。しかし、holder: 'holder [" key "] = g'という辞書にgを追加しようとしたときに、' print holder'がユニコード出力をもう一度得ました。最終的に私は辞書をCSVに出力したいのですが、それがチェーンを通じて正しいことを確認したいのです。 – user5356756
@ user5356756、それはちょうどreprの表現ですhttp://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python、dictから値そのものを印刷してみてください。また、答えの終わりに応じて、あなたは本当にbs4 –
gotchaにアップグレードする必要があります、ありがとう!それは動作します。私はdictwriterを使って辞書をcsvに転送するのに問題がありますが、それはこの質問の範囲をはるかに超えていますので、必要に応じていくつかの調査を行い、新しいものを開きます。 bs4に関しては、スクリプトの最初の行(私が上に再現しなかったもの)は 'from bs4 import BeautifulSoup'です。私は3から4に切り替えるために必要なことを超えて何かがありますか? – user5356756