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

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

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

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

3559閲覧

Python3.6でimport urllib.parseでエラーが起きます。

aiueo19

総合スコア19

スクレイピング

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2018/05/12 17:17

編集2018/05/12 17:58

現在、とある書物を読みながらUbuntu16.04、Pycharm、Python3.6、Chainerなどを用いて文章の自動生成を試みているのですが
「このプログラムの詳細については解説しませんが、Python3のurllibライブラリを使って(略)」と書かれていたため

ターミナルからpipの最新バージョンでpip install urllibとコマンドを打ったところ、「Could not find a version that satisfies the requirement urllib(from versions:(何も書かれていない)o matching distribution found for urllib」
と表示され、pip3でも同じことをやっても同じエラー結果でした。

無知なため、urllibについて検索したところ、Python3ではurllib3というものが出ているらしくpip install urllib3と入力したところ、インストールに成功しました。

ですが、urllib3の公式サイトのリファレンスを見たところ
urllib.parseという記述がなく、..site-packages/urllib3を見てもparse.pyというあるべきファイル自体が見当たらなく、これはpython3でurllib3になって仕様が変わったためにエラーが出るんじゃ・・・でも本の著者の環境はPython3.5.2と書いてあるしと思いつつ試しにpython3.6で以下のコードを実行すると

python

1# -*- coding: utf-8 -*- 2import sys 3import codecs 4import re 5import urllib.parse 6import urllib.request 7 8sys.stdout = codecs.getwriter('utf_8')(sys.stdout) 9 10urls = [ \ 11 u'不思議の国のアリス', \ 12 u'ふしぎの国のアリス', \ 13 u'鏡の国のアリス', \ 14 u'地下の国のアリス', \ 15 ] 16for url in urls: 17 # 日本語版Wikipediaのページ 18 with urllib.request.urlopen('https://ja.wikipedia.org/wiki/' + \ 19 urllib.parse.quote_plus(url)) as response: 20 # URLから読み込む 21 html = response.read().decode('utf-8') 22 23 # 本文の<p>タグを取得する 24 all = re.findall(r'<p>.*</p>', html) 25 26 # 半角文字を削除して出力する 27 for a in all: 28 a = re.sub(r'[\s!-~]*', '', a) 29 # 「。」を改行にする 30 a = re.sub(r'。', '\n', a) 31 sys.stdout.buffer.write(a.encode('utf-8'))

予想通りImportError:No module named parseとエラーが表示されました。

試したことをまとめますと
1:pip install urllib→できない
pip install urllib3→urllib3はインストールできた、でもparse.pyがないからurllib.parseをインポートできない
検索したところ、urllib自体はpython3の標準ライブラリ?なのになぜかurllib.parseがインポートできない(ImportError: No module named parse)

2:検索して辿り着いたGit-hubにあったurllibのparse.pyのソースコードをコピーし、こちら側にparse.pyを作りそれにコピペし..site-packages/urllib3/内に入れ、urllib3.parseとしてインポートできるようにしましたが
文字コードが違うというエラーが出たため、できませんでした。

3:文字コードエラーを直すため

-- coding: utf-8 --

を記述しましたが、今度は別の文字コードにしてくれと言われできませんでした。
SyntaxError: Non-UTF-8 code starting with '\xfe'うんぬん。

どうすればurllib.parseをインポートできるようになるのでしょうか。

初心者なので基礎的なところで躓いているのかもしれませんが、何卒よろしくお願い致します。

【追記1】
ターミナル上でimport urllib.parseとimport urllib.requestを
実行してみたところエラーもなくインポートできました。

Pycharm上でのみ起こる現象のようです。

【追記2】
anacondaが最新版ではなかったようで、最新版にしたところ
python3.6/urllib/というフォルダーが作成され、parse.pyが入っておりました。

ですが、ImportError: No module named parseと表示されてしまいます。
これは、なぜでしょうか..。

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

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

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

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

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

gingertail

2018/05/12 17:25

import出来なかったからインストールしたのか、いきなりインストールしたのか。後者ならアンインストールしてみては?
aiueo19

2018/05/12 17:37

後者だったので再度インストールをしてみましたが、エラーが出てしまいました。提案ありがとうございます。
gingertail

2018/05/12 17:39 編集

再インストールじゃなくてアンインストールです。何もインストールしなくてもimport出来るのではないか?ということです
aiueo19

2018/05/12 17:42

すみません、空目しておりました。現在アンインストールしてPycharm上から実行してみた結果、やはりImportError: No module named parseと出てしまいました。
guest

回答1

0

自己解決

自己解決しました。

Pycharmにて、Run→Edit Configurations..→Environment variablesにpython3.6/urllibのパスを通したところ、動きました。

原因は、parse.pyまでパスが通っていなかったようです。

皆さんありがとうございました。

投稿2018/05/12 18:06

aiueo19

総合スコア19

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問