syun_nissi
@syun_nissi (syun nissi)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

virtualbox,vagrant環境でWikiExtractor.pyを実行した際に出たエラーについて(初心者です)

解決したいこと

pythonでクローリングとスクレイピングを行うための本に記載されている内容を実行したところエラーが発生しましたが、解決方法がわかりません。ご教示いただけますと幸いです。

本に記載の通り仮想環境を構築し、virtualboxとvagrantを入れています。
wikipediaのデータセットから文章を抽出する章があり、以下のコマンドをプロンプトに入力しました。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
python WikiExtractor.py --no_templates -o articles -b 100M jawiki-latest-pages-articles1.xml-p1p106178.bz2
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

発生している問題・エラー

Traceback (most recent call last):
  File "WikiExtractor.py", line 60, in <module>
    from cStringIO import StringIO
ModuleNotFoundError: No module named 'cStringIO'

該当するソースコード

python WikiExtractor.py --no_templates -o articles -b 100M jawiki-latest-pages-articles1.xml-p1p106178.bz2

自分で試したこと

cStringIOのモジュールが足りないと思い、「pip install cStringIO」を実行したところ、下記のエラーが出てしまい、先に進めることができません。
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://pypi.org/simple/cstringio/

こちららのサイトに投稿するのは初めてでして、またpython初心者、仮想環境構築なども理解不足のまま本に記載の通り進めているため、文章がつたなく理解しづらい点があるかもしれませんがご容赦いただけますと幸いです。

0

9Answer

正常に実行されてもエラーがあっても何か出力されるはずですが、何も出ないのは変ですね。

python -m wikiextractor.WikiExtractor --version を実行するとどうなりますか? 手元では(無関係な警告が出ていますが)以下のようになりました。

$ python -m wikiextractor.WikiExtractor --version
/Users/uasi/tmp/py/lib/python3.8/site-packages/wikiextractor/WikiExtractor.py:2447: DeprecationWarning: Flags not at the start of the expression '\\[(((?i)bitcoin:|ftp' (truncated)
  ExtLinkBracketedRegex = re.compile(
/Users/uasi/tmp/py/lib/python3.8/site-packages/wikiextractor/WikiExtractor.py:2454: DeprecationWarning: Flags not at the start of the expression '^(http://|https://)(' (truncated)
  EXT_IMAGE_REGEX = re.compile(
WikiExtractor.py 2.75
1Like

いえ、 pip install wikiextractor でインストールして python -m wikiextractor.WikiExtractor で実行するので合っています。以下に手元で実行したコマンドの完全なログを貼ります。

以下のように実行してみて、何かエラーや変わった出力は出ませんか?

# OS のバージョン
ubuntu@primary:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"

# virtual env を作って有効化
ubuntu@primary:~$ python3 -mvenv py_tmp
ubuntu@primary:~$ cd py_tmp
ubuntu@primary:~/py_tmp$ source bin/activate

# Python と pip のバージョン
(py_tmp) ubuntu@primary:~/py_tmp$ python3 --version
Python 3.6.9
(py_tmp) ubuntu@primary:~/py_tmp$ pip3 --version
pip 9.0.1 from /home/ubuntu/py_tmp/lib/python3.6/site-packages (python 3.6)

# wikiextractor をインストール
(py_tmp) ubuntu@primary:~/py_tmp$ pip3 install wikiextractor
Collecting wikiextractor
  Using cached https://files.pythonhosted.org/packages/6f/df/3cc30c29319b85b935971df4bea169616a84e5dcc68b729fc9757a8e39e9/wikiextractor-0.1.tar.gz
Building wheels for collected packages: wikiextractor
  Running setup.py bdist_wheel for wikiextractor ... error
  Complete output from command /home/ubuntu/py_tmp/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-5a47zkrn/wikiextractor/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpdz062grcpip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help

  error: invalid command 'bdist_wheel'

  ----------------------------------------
  Failed building wheel for wikiextractor
  Running setup.py clean for wikiextractor
Failed to build wikiextractor
Installing collected packages: wikiextractor
  Running setup.py install for wikiextractor ... done
Successfully installed wikiextractor-0.1

# wikiextractor のバージョン
(py_tmp) ubuntu@primary:~/py_tmp$ python3 -mwikiextractor.WikiExtractor --version
WikiExtractor.py 2.75
1Like

cStringIO は Python 2 の標準ライブラリにだけあるモジュールです。 Python 3 では標準ライブラリが改編されたためモジュール名が変わっています。使っている WikiExtractor.py のバージョンが古くて Python 3 に対応していないようですね。最新バージョンでは対応済みなのでそちらを使うといいでしょう。

$ pip install wikiextractor
$ python -m wikiextractor.WikiExtractor --no_templates -o articles -b 100M jawiki-latest-pages-articles1.xml-p1p106178.bz2
0Like

さっそくのご連絡ありがとうございます。ご指摘いただいた通り入力しましたが、実行されません。(添付ファイルご参照ください)
入力結果に問題がありますでしょうか。
2020_09_25_22_06_34_選択vagrant_ubuntu_bionic_.png

0Like

再度のご連絡ありがとうございます。wikiextractorのバージョン取得を試してみましたが、やはり何も反応しません。
2020_09_26_10_50_57_vagrant_ubuntu_bionic_.png

wikiextractorをインストールしたつもりでできていなかったのかと思い、再度下記の通り実行しましたが、すでに入っているというメッセージが出ました。
2020_09_26_11_02_08_vagrant_ubuntu_bionic_.png

wikiextractor.WikiExtractorとは別のものでしょうか?だとすると、wikiextractor.WikiExtractorを入れないといけないと思いますが、入れ方がネットなどで探しても見つからずわかりません。
分かりましたらご教示いただけますと幸いです。
よろしくお願いいたします。

0Like

ご連絡ありがとうございます。
同じようにやってみましたが、うまくいかずよくわかりません💦
もうあきらめようかとも思いますので、こちらの画面でわからなければ大丈夫です。
よろしくお願いいたします。
2020_09_26_22_01_20_vagrant_ubuntu_bionic_scraping_book.png

0Like

最後の行の python3 -mwikiextractor.WikiExtractor --version で Wiki の i を大文字に打ち間違えてますね。そこを直したとしても以前の状況と変わっていないので動かなそうですが……。 scraping-book ではなくまっさらな virtual env を作ればもしかしたら動くかもしれません。

0Like

ご連絡ありがとうございます。確かにWIkiExtractorとなっていたところをWikiExtractorと直して打ち直しましたが、やはり反応しません。
仰る通り、新しい仮想環境を作り直せばうまくいくかもしれませんが、本を見ながら作ったもので、その本を返却してしまいわからなくなってしまいました(・_・;)

ですので一旦あきらめて別の課題に取り組もうかと思います。いろいろありがとうございました。。

0Like

vagrantではなく、Windows Subsystem for Linux(WSL)上でubuntuを立ち上げ、下記コマンドを実行したところ、インストールできました。おそらく使えるのではないかと思います。お手数をおかけしました。
2020_09_29_17_24_00_syunni_DESKTOP_JURJ4OL_ubuntu.png

0Like

Your answer might help someone💌