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

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

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

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

Python 3.x

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

2058閲覧

python pandas スクレイピング時のエラー "ImportError: lxml not found, please install it"

retri

総合スコア3

スクレイピング

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

Python 3.x

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/10/07 10:27

編集2022/10/07 10:29

pythonのライブラリであるPandasを使用して、webスクレイピング(HTML)を行おうとしています。
具体的には、pipでlmxlをインストールしているのですが、jupiternotebook上で実行しようとすると、"ImportError: lxml not found, please install it"と出てしまい、スクレイピングができません。
lmxlのインストールはVScode上で行っています。

どなたか解決していただけると幸いです。
よろしくお願いいたします。

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

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

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

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

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

meg_

2022/10/07 10:48

> jupiternotebook上で実行しようとすると ”何を”実行しようとしたのでしょうか?
PondVillege

2022/10/07 11:10

> lmxlのインストールはVScode上で行っています 具体的にインストール方法を示してください.(他の内容も具体性が不足しており原因究明に至りません)
jbpb0

2022/10/07 11:22 編集

> pipでlmxlをインストールしている > lmxlのインストールはVScode上で行っています。 と同じ状態で pip show lxml を実行してください いろいろ表示される中に「Location:」で始まる行があるので、そこに書かれてるパスを記録してください 次に、jupyterで > "ImportError: lxml not found, please install it"と出てしまい の状態で、下記のpythonコードを実行してください import sys import pprint pprint.pprint(sys.path) たくさんパスが表示されますが、その中にpip show...で記録したパスが入ってますでしょうか? 入ってないとimportできません
retri

2022/10/07 11:36

ありがとうございます。 locationに表示されているパスが、import sys import pprint pprint.pprint(sys.path)で表示される結果に入っています。
retri

2022/10/07 11:37

しかしながら、依然として、エラーが表示されます。
jbpb0

2022/10/07 11:43

何を実行して > "ImportError: lxml not found, please install it"と出てしまい となるのでしょうか?
PondVillege

2022/10/07 11:57 編集

lxmlのインストールもJupyter Notebook上でやるようにしてください. Notebookのセルで !pip install lxml もしくは !python -m pip install lxml とすると良いでしょう.これでうまくいかないならPandasの再インストールがおすすめです. VSCodeで動かされたPythonとJypyter Notebookで動かされたPythonが別物である可能性が高いです.
retri

2022/10/07 12:07

ありがとうございます。 Jupiternotebook上で実行してみましたが、同様のエラーが出ました。 →VSCodeで動かされたPythonとJypyter Notebookで動かされたPythonが別物である可能性が高いです. こちらの文章の意味が理解できないのですが、説明していただけると幸いです。
jbpb0

2022/10/07 12:17

>> VSCodeで動かされたPythonとJypyter Notebookで動かされたPythonが別物である可能性が高いです. > こちらの文章の意味が理解できない jupyterと、vs codeのpythonのそれぞれで、下記を実行して、それぞれで使ってるpythonの絶対パスを調べてください import sys print(sys.executable) 同じでしょうか?
jbpb0

2022/10/07 12:20 編集

> url = "https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%AC%E3%83%99%E3%83%AB%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E4%B8%80%E8%A6%A7" tables = pd.read_html(url) を実行しようとして、上記のエラーが出ます。 jupyterで from lxml import etree は実行できますか? エラーになりますか? エラーになる場合ですが、その時のエラーメッセージは下記と同じですか? > "ImportError: lxml not found, please install it"
PondVillege

2022/10/07 12:24

VSCodeで実行した import sys import pprint pprint.pprint(sys.path) と,Jupyter Notebokで実行した import sys import pprint pprint.pprint(sys.path) の出力が違う可能性がある.ということです.特にsite-packagesの場所が違うなら,インストール先のPythonと実行環境のPythonが別物であるということになります. インストールはVSCodeで,実行はJupyterNBで,なら別々のPythonカーネルである可能性が捨てきれません.普通,同一のPythonカーネルでインストールも実行も行うものです. 実行をJupyterNBで行うとのことで,Notebookセルでのpip installをお願いしましたが,これでもエラーが出るならPandasの再インストール等の手法をとることになりそうです.
retri

2022/10/07 12:28

ありがとうございます。 まず、import sys    print(sys.executable) の実行結果ですが、notebookの方では、末尾が/python3であったのに対して、VScodeでは、末尾がpythonという違いが発見できました。
retri

2022/10/07 12:30

from lxml import etree のnotebookでの実行結果ですが、何もnotebook上には表示されませんでした。
jbpb0

2022/10/07 12:46

> from lxml import etree のnotebookでの実行結果ですが、何もnotebook上には表示されませんでした。 何も表示されないのは、エラーが出ずに実行できたということなので、おそらく「lxml」自体は使用可能です なのに「pd.read_html(url)」はダメなのですね ps_aux_grepさんも書いてるけど、pandasが怪しいかも
jbpb0

2022/10/07 12:50

pythonは、何を使ってるのでしょうか? 公式版? anaconda版? それ以外?
retri

2022/10/07 13:18

pythonは公式版をインストールしました。
PondVillege

2022/10/07 13:29

ならPandasの再インストールを試しましょう. !python3 -m pip uninstall pandas -y !python3 -m pip install pandas
retri

2022/10/07 13:47

この実行は、VXcode上でも構わないでしょうか?
PondVillege

2022/10/07 13:54

念の為,両方でやってみましょうか. ちなみに「VSCode上でやる」というのはVSCodeで開かれるターミナルで実行されるもので間違い無いですか?
jbpb0

2022/10/07 14:30

jupyterで print(sys.executable) を実行して表示されたpythonの絶対パスを使うのが、確実です 調べた絶対パスが、たとえば /aaa/bbb/python3 だとしたら、ターミナルで下記を実行します (実行する際は、調べた実際のpythonのパスに置き換えてください) /aaa/bbb/python3 -m pip uninstall pandas -y /aaa/bbb/python3 -m pip install pandas --no-cache-dir
retri

2022/10/07 16:08

ありがとうございます。 /aaa/bbb/python3 -m pip uninstall pandas -y /aaa/bbb/python3 -m pip install pandas --no-cache-dir こちら、自分のパスに変えて実行完了しました。
retri

2022/10/07 16:25

この後どうしたら良いでしょうか?
retri

2022/10/07 17:39

すみません、pythonのダウンロードをhomebrew経由でpyenvというものを使ってダウンロードしていました。
PondVillege

2022/10/07 17:42 編集

次のコマンドを実行してください. /aaa/bbb/python3 -c "import pandas as pd; pd.read_html('https://www.google.com')" エラーが出ていなければ,そのPythonカーネルにlxmlおよびPandasが正常にインストールされて動いています. このカーネルをJupyter Notebookの実行に使えば良いだけのことです.
jbpb0

2022/10/07 23:34 編集

> /aaa/bbb/python3 -m pip install pandas --no-cache-dir こちら、自分のパスに変えて実行完了しました。 の「自分のパス」はjupyterで調べたpythonの絶対パスだから、上記でjupyterで使ってるpythonのpandasが再インストールされたはず jupyterで下記を実行してみてください 「url」は違うWebページでもいいです > url = "https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%AC%E3%83%99%E3%83%AB%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E4%B8%80%E8%A6%A7" tables = pd.read_html(url)
retri

2022/10/08 08:29 編集

皆さんありがとうございます。 VScode上でpythonの拡張機能を使って、notebookを使うことができました。 lxmlのインストールができ、スクレイピングまでできました。 しかしながら、スクレイピングしたものをCSVファイルにしようとすると、 ("df.to_csv("data/write_data.csv" を実行しようとした) "Output exceeds the size limit, Open the full output data in a text editor " と表示され、実行できません。 解決策がありましたら、ご教授いただきたいです。。 よろしくお願いいたします。
jbpb0

2022/10/08 09:06 編集

> スクレイピングしたものをCSVファイルにしようとすると、 は、この質問の > "ImportError: lxml not found, please install it"と出てしまい、スクレイピングができません。 とは別内容なので、別の質問にしてください
jbpb0

2022/10/08 09:02

> スクレイピングまでできました。 この質問の > "ImportError: lxml not found, please install it"と出てしまい、スクレイピングができません。 が解決したのなら、どのようにしたのかを質問者さんが回答に書いて、「自己解決」にしてください
retri

2022/10/08 09:22

承知しました。 上記記述の繰り返しになってしまいますが、VScode上でpythonの拡張機能を使って、notebookを使うことができました。その上で、 lxmlのインストールができ、スクレイピングまでで完了しました。 皆さんにご指摘いただいた通り、異なるpythonを動かしていたのだろうと推測いたしました。 兎にも角にも解決いたしました。 本当にありがとうございました。
guest

回答1

0

自己解決

VScode上でpythonの拡張機能を使って、juiternotebookと接続することで、解決いたしました。

投稿2022/10/08 09:23

retri

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問