
初利用、初心者です。よろしくお願いします。
python3とseleniumを使ってwebサイトをスクレイピングしていました。
ユニコード文字列をlxml.htmlで取って来た要素に対して、
lang
1 comments = u"" 2 comments_elem = root.xpath('//li[@class="hoge"]/span') 3 for i,comment_elem in enumerate(comments_elem): 4 comments += comment_elem.text_content()
みたいな感じで抜き出していたのですが、
途中に絵文字等が入っていたらしく、
lang
1UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 3898-3898: Non-BMP character not supported in Tk
というエラーが出てきました。
絵文字は不要なので、飛ばして続きの文字列を処理したいのですが、
どうすればいいのでしょうか?
###試したこと
下記サイトにStreamWriterを作ると良いみたいなことが書かれていたので
実践したのですが、
http://d.hatena.ne.jp/nishiohirokazu/20120112/1326355987
新たに
lang
1.... 2File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/codecs.py", line 377, in write 3 self.stream.write(data) 4TypeError: must be str, not bytes
というエラーが発生しました。dataがbyte列なのでstrに変えろということでしょうか?
よくわからないでやっているので、もしできればStreamWriterなどについても教えていただけると幸いです。
###補足情報
python3はver3.6.2
環境はmac OS X 10.9.5です。
容量の関係で更新できずosは若干古いですが、
本題とはあまり関係ないと思ってます。
回答よろしくお願いします。m(_ _)m
###追記
ご指摘を受けました
自己解決欄に書いたprint関数の部分について、です。
と言っても
lang
1comments = u"絵文字など????" # 実際のcommentsの中身は上記のコードでの結果 2 3print(comments)
といった程度のことです。
ただしどんな絵文字が上記のエラー原因になった(Non-bmpな絵文字と言われた)かは確認できていません。
自己解決欄に書いたコードに対しその解決方法(.translate等)が適用されていなかったと考えて下さい。
その他の部分で直接この件に関係するものはおそらくないです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/04 06:52
退会済みユーザー
2017/09/04 07:31
2017/09/04 07:41