2016-06-26 5 views
-1

下記のページから特殊文字を削除(またはエンコード)するにはどうしたらいいですか?Pythonで特殊文字を綺麗にします。美味しいスープ

import urllib2 
from bs4 import BeautifulSoup 
import re 

link = "https://www.sec.gov/Archives/edgar/data/4281/000119312513062916/R2.htm" 

request_headers = {"Accept-Language": "en-US,en;q=0.5", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Referer": "http://google.com", "Connection": "keep-alive"} 
request = urllib2.Request(link, headers=request_headers) 
html = urllib2.urlopen(request).read() 
soup = BeautifulSoup(html, "html.parser") 
soup = soup.encode('utf-8', 'ignore') 
print(soup) 
+0

実際の問題は何ですか?なぜあなたはそれを印刷する前に結果をエンコードしていますか? Stdoutはすでにあなたの端末ロケールにエンコードしています。 –

+1

私は、HTMLの解析中にエラーが発生するため、問題があると想定していますか?文字セット= us-asciiので、何かをエンコードする必要はありませんが、問題はHTMLが壊れていることです。あなたはそれを解析するためにhtml5libとlxmlを管理する別のパーサが必要ですが、うまくいく人を知っている壊れたhtmlをウィットにします。 –

答えて

-1

Unicodeオブジェクトは、ASCIIに変換できる場合にのみ印刷できます。 ASCIIでエンコードできない場合は、そのエラーが発生します。明示的にエンコードしてからスープを印刷することをお勧めします。

import requests 
from bs4 import BeautifulSoup 
import re 

link = "https://www.sec.gov/Archives/edgar/data/4281/000119312513062916/R2.htm" 

request_headers = {"Accept-Language": "en-US,en;q=0.5", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Referer": "http://google.com", "Connection": "keep-alive"} 
reuest = requests.get(link, headers=request_headers) 
soup = BeautifulSoup(reuest.text,"lxml") 
print(soup.encode('utf-8')) 
+0

あなたはOPのコードを全く説明せずに完全に変更しましたが、同じ誤ったエンコーディングメカニズムを維持しています。 OPはBSに 'html.parser'を使いたいのですが、' lxml'のために静かに入れ替えました。さらに、リクエストライブラリを導入しましたが、ここでは必要ありません。 Unicodeオブジェクトについても間違っています。標準出力ストリームはシェルのエンコーディングにエンコードしようとします。まれにASCIIをエンコードすることです。したがって、必要に応じてstdoutにエンコードを許可し、 'str'に' bytes'を渡さないようにしてください –

関連する問題