質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

881閲覧

lxmlで文字化けand 中の文章だけをうまく抜き出す方法

renren643

総合スコア279

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/08/11 03:07

lxmlを使ってスクレイピングしているのですが、このようにすると、

for elem in html.cssselect("div.product_explain"): print(etree.tostring(elem, encoding="utf-8"))

以下のように帰ってきます。

b'<div class="product_explain">&#13;\n \xe2\x96\xa0\xe3\x82\xab\xe3\x83\xa9\xe3\x83\xbc<br />&#13;\n<br />&#13;\n\xe3\x83\x96\xe3\x83\xa9\xe3\x83\x83\xe3\x82\xaf<br />&#13;\n<br />&#13;\n\xe2\x96\xa0\xe3\x82\xb5\xe3\x82\xa4\xe3\x82\xba<br />&#13;\n<br />&#13;\n\xe3\x80\x90S\xe3\x80\x91\xe7\x9d\x80\xe4\xb8\x88\xef\xbc\x9a100cm\xe3\x80\x80\xe3\x83\x90\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a81cm\xe3\x80\x80 \xe3\x82\x86\xe3\x81\x8d\xe4\xb8\x88\xef\xbc\x9a33cm\xe3\x80\x80\xe3\x80\x80\xe3\x82\xa6\xe3\x82\xa8\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a64-76cm<br />&#13;\n\xe3\x80\x90M\xe3\x80\x91\xe7\x9d\x80\xe4\xb8\x88\xef\xbc\x9a101cm\xe3\x80\x80\xe3\x83\x90\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a85cm\xe3\x80\x80\xe3\x82\x86\xe3\x81\x8d\xe4\xb8\x88\xef\xbc\x9a34.5cm\xe3\x80\x80\xe3\x82\xa6\xe3\x82\xa8\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a68-80cm<br />&#13;\n\xe3\x80\x90L\xe3\x80\x91\xe7\x9d\x80\xe4\xb8\x88\xef\xbc\x9a102cm\xe3\x80\x80\xe3\x83\x90\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a89cm\xe3\x80\x80 \xe3\x82\x86\xe3\x81\x8d\xe4\xb8\x88\xef\xbc\x9a36cm\xe3\x80\x80\xe3\x80\x80\xe3\x82\xa6\xe3\x82\xa8\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a72-84cm<br />&#13;\n\xe3\x80\x90XL\xe3\x80\x91\xe7\x9d\x80\xe4\xb8\x88\xef\xbc\x9a103cm\xe3\x80\x80\xe3\x83\x90\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a93cm\xe3\x80\x80\xe3\x82\x86\xe3\x81\x8d\xe4\xb8\x88\xef\xbc\x9a37.5cm\xe3\x80\x80\xe3\x82\xa6\xe3\x82\xa8\xe3\x82\xb9\xe3\x83\x88\xef\xbc\x9a76-88cm<br />&#13;\n<br />&#13;\n\xe2\x96\xa0\xe7\xb4\xa0\xe6\x9d\x90<br />&#13;\n<br />&#13;\n\xe3\x82\xb3\xe3\x83\x83\xe3\x83\x88\xe3\x83\xb3 \xe3\x80\x80\xe3\x83\x9d\xe3\x83\xaa\xe3\x82\xa8\xe3\x82\xb9\xe3\x83\x86\xe3\x83\xab&#13;\n </div>&#13;\n &#13;\n '

1、これは文字化けしているのでしょうか?だとしたら、どのように直せばいいのでしょうか?
2、これだと、<div class="product_explain"></div>のタグも一緒に取得しちゃうようです。
div.product_explainの中に、brタグで区切られた、textがあるのですが、それだけうまく取り出すにはどうしたらいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umyu

2018/08/11 10:07

質問文にコードをcodeタグで追記してくださいな。
guest

回答1

0

ベストアンサー

bytesがそういう形で表示されているだけで、decode()メソッドで文字化け自体は解消します。

中身の抜き出しは、elem.text_content()でできませんか?

投稿2018/08/11 12:32

hayataka2049

総合スコア30939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

renren643

2018/08/11 13:03

できました。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問