2016-11-04 5 views
0

ウェブサイトからテキストデータを取得しようとしていますが、このコードにはエラーが表示されます。エラーがどこにあるか教えてください。UTF-8をエンコードするときにエラーが発生する

import requests 

from bs4 import BeautifulSoup 

def getportions(soup): 

for p in soup.find_all("p", {"class": ""}): 
    yield p.text 


def readpage(address): 
    page = requests.get(address)  
    soup = BeautifulSoup(page.text, "html.parser") 
    output_text = '' 
    for s in getportions(soup): 
     output_text += s.encode("utf8") 
     output_text += "\n" 
    print (output_text) 
    print ("End of article") 
    fp = open("content.txt", "w") 
    fp.write(output_text) 
if __name__ == "__main__": 
    readpage("http://yahoo.com") 

エラーを以下に示します。

output_text += s.encode("utf8"). TypeError: Can't convert 'bytes' object to str implicitly

+0

'' bytes'を返し.encode':

def readpage(address): ... output_text = '' for s in getportions(soup): output_text += s output_text += "\n" print (output_text) print ("End of article") fp = open("content.txt", "w", encoding='utf8') fp.write(output_text) 

あなたは、単に?と、すべての非ASCII文字を置き換えることで、テキストをサニタイズしたい場合は、ファイルその道を開きますオブジェクト。あなたは何をしようとしているのですか? –

+0

@MorganThrappファイルに内容を書き込もうとしています –

+0

'decode'を意味するのでしょうか?なぜあなたは 'utf-8'で何かをする必要があると思いますか? –

答えて

1

あなたは、Python 3を使用する場合は、すべての文字列はUnicodeでネイティブにあり、ファイルを開くときは、エンコーディングを指定することができます。あなたのコードはなるかもしれない:

fp = open("content.txt", "w", encoding='ascii', errors='replace') 
+0

エラーが表示されますagin:return codecs.charmap_encode(input、self.errors、encoding_table)[0] UnicodeEncodeError: 'charmap' \ u03a3 'の位置350:文字はになります –

+0

@NARAYANCHANGDER:再生できません。エラーとスタックトレースを生成するコードを表示します。 Utf8はユニコード文字をエンコードすることを目的としています... –

+0

他のウェブページのために働いてくれてありがとう –

関連する問題