2016-12-02 2 views
2

PythonについてBeautifulSoup出力エンコーディング(Python 3.4.4を使用):BeautifulSoup出力エンコーディング:soup.p.encode( "utf-8")とsoup.select( 'a')&.getText()を組み合わせる方法

soup.p.encode( "utf-8")とsoup.select( 'a')を組み合わせるには& .getText()?

I.e.私は2つのうちの1つを行うことができますが、両方を行う方法はわかりません... - >私はsoup.p.encode( "utf-8")を使いたいと思います。 "Aloë"は私の出力では "aloÃ"に変換されます。

しかし、私はまた、 "soup.select( 'a')と" .getText() "を介してhrefオブジェクトを選択するためにスープオブジェクト(type:)を使いたいと思います。もし私がsoup.p.encode "utf-8")まずは、 "AttributeError: 'bytes'オブジェクトに属性 'select'がないため、これは不可能です。

しかし、スープオブジェクトをリストに変換してから文字列を変換すると、UTF-8文字を戻すには時間がかかりすぎたようです。例えば。 text = text.decode( 'utf-8')は機能しません。私は本当にいくつかのアドバイスを使用してください!

FYI私のコード:

import requests, bs4 

res = requests.get(url) 
try: 
    res.raise_for_status() 
except Exception as exc: 
    print('There was a problem: %s' % (exc)) 

soup = bs4.BeautifulSoup(res.text,"html.parser", from_encoding="UTF-8") 
#soup = soup.encode("utf-8") 
#type: <class 'bs4.BeautifulSoup'> 
#print(soup.original_encoding) -> None... 
aElems = soup.select('a') 
#type: <class 'list'> 
lengthElems = len(aElems) 

for i in range (0, lengthElems): 
    text = aElems[i].getText() 
    #text = text.decode('utf-8') 
    link = aElems[i].get('href') 
+0

- 文字の組み合わせを: ÂÂá çâリットル¢、C éé A〜E ëë îî IIのI ññ A 2ò A 3ó öö üü úU ï¯ â ' â... – Wouter

答えて

0

あなただけのスクリプト内でUTF-8にお使いのシステムのデフォルトのエンコーディングを設定することができます。

この欲しいあなたのファイルの先頭に:私は今、検索を行って、次のコードのための私のExcel出力ファイルに置き換えている回避策としてFYI

import sys 

if __name__ == "__main__": 
    reload(sys) 
    sys.setdefaultencoding("utf-8") 
+0

あなたの高速アンワーに感謝します。申し訳ありませんが、私はPython 3.4.4 [MSC v.1600 64ビット(AMD64)]を使用しています。私はutf-8が既にデフォルトであると思いますか?私はこれも私が "名前"のリロードが定義されていない得る理由だと思います。だから私はそれを使用してリロードを行うためにimportlibをインポートしましたが、 "'モジュール'オブジェクトには '' setdefaultencoding '"属性がありません。 – Wouter

関連する問題