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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

4097閲覧

ImportError: cannot import name requests の解決方法

ponpon0987

総合スコア17

Python 3.x

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

0グッド

0クリップ

投稿2018/11/09 06:49

前提・実現したいこと

python初心者です。
現在、内部リンクの可視化を行なっている際にエラーが発生し解決できないので
質問させていただきます。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "link_network.py", line 4, in <module> from urllib import requests ImportError: cannot import name requests

該当のソースコード

python

1# coding:utf-8 2from bs4 import BeautifulSoup 3import urllib 4from urllib import request 5import time 6import csv 7import os 8import numpy as np 9import time 10from argparse import ArgumentParser 11import networkx as nx 12import matplotlib.pyplot as plt 13 14def extract_url(root_url): 15 page = 1 16 is_articles = True 17 urls = [] 18 entry_url = root_url + "/entry/" 19 20 while is_articles: 21 html = request.urlopen(root_url+"/archive?page={}".format(page)) 22 soup = BeautifulSoup(html, "html.parser") 23 articles = soup.find_all("a",class_="entry-title-link") 24 for article in articles: 25 urls.append(article.get("href")) 26 if len(articles) == 0: 27 # articleがなくなったら終了 28 is_articles = False 29 page += 1 30 return urls 31 32def make_network(root_url, urls): 33 entry_url = root_url + "/entry/" 34 G = nx.Graph() 35 for url in urls: 36 article_name= url.replace(entry_url,"").replace("/","-") 37 G.add_node(article_name) 38 for i,url in enumerate(urls): 39 print(i+1,"/",len(urls)) 40 try: 41 html = request.urlopen(url) 42 except urllib.error.HTTPError as e: 43 print(e.reason) 44 except urllib.error.URLError as e: 45 print(e.reason) 46 soup = BeautifulSoup(html, "html.parser") 47 entry = soup.select(".entry-content")[0] 48 links = entry.find_all("a") 49 for link in links: 50 l = link.get("href") 51 if l in urls: 52 linking_article_name = url.replace(entry_url,"").replace("/","-") 53 linked_article_name = l.replace(entry_url,"").replace("/","-") 54 print("被リンク!{} -> {}".format(linking_article_name, linked_article_name)) 55 j = urls.index(l) 56 G.add_edge(linking_article_name, linked_article_name) 57 else: 58 continue 59 return G 60 61def visualize(G, savename, savegml): 62 pos = nx.spring_layout(G) # グラフ形式を選択。ここではスプリングモデルでやってみる 63 nx.draw(G, pos, with_labels=True,alpha=0.3,font_size=0.0,node_size=10) # グラフ描画。 オプションでノードのラベル付きにしている 64 plt.savefig(savename+".png") 65 plt.show() 66 if savegml: 67 nx.write_gml(G,savename+".gml") 68 69 70if __name__ == '__main__': 71 parser = ArgumentParser() 72 parser.add_argument("-u", "--url", type=str, required=True,help="input your url") 73 parser.add_argument("-o", "--savename", type=str, default="network", help="output name") 74 parser.add_argument('-g', "--savegml", action="store_true", default=False) 75 args = parser.parse_args() 76 77 urls = extract_url(args.url) 78 G = make_network(args.url, urls) 79 visualize(G, args.savename, args.savegml)

試したこと

$ pip list でrequestはインストールされていることは確認致しました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

python2環境で実行していると提示エラーが発生します。
python3環境で実行してください。

投稿2018/11/09 06:54

can110

総合スコア38266

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

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

ponpon0987

2018/11/09 08:12 編集

ありがとうございます。 無事、python3に変更できたのですが、 実行したところ File "link_network.py", line 2, in <module> from bs4 import BeautifulSoup ImportError: No module named 'bs4' とエラーが起きました。 解決方法をお教えいただけると幸いです。
can110

2018/11/09 08:25

BeautifulSoupはインストールしていますか?
ponpon0987

2018/11/09 08:41

はい。インストールしております。 いくつか質問がございます。 pip3 listで BeautifulSoup4が表示されます。 BeautifulSoupはpython3では動かないので4しか無理であるとどこかのページで読みました。 それなのにソースコードはBeautifulSoupでいいのでしょうか。 また、pip show bs4で Location: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages と表示され、 python -Vで Python 3.5.4と表示されますが バージョンが違うことによる影響も考えられるでしょうか。 申し訳ありませんが回答の方、 よろしくお願い致します。
can110

2018/11/09 08:51

はい。問題ありません。というかこちらの環境3.5.xでは正常にインポートできています。 念のため確認なのですが、そのソースコードはご自身で考えて書かれたものではないのでしょうか? ご自身で書かれたコードであればどう修正すべきかは自ずから明らかと思いますが、もし違うなら書かれた方に質問されたほうが早いと思います。 あるいは連絡つかないのであれば、個別に質問を立ててください。
ponpon0987

2018/11/09 09:05

ありがとうございます。 ソースコードは他社様から引っ張ってきたものです。 申し訳ありませんでした。 ここまで、お答えしていただきありがとうございます!
can110

2018/11/09 09:10

(「他社様から引っ張ってきた」ってもちろん許可はもらっています、よね…)
ponpon0987

2018/11/09 09:13

ブログに掲載されているコードを引っ張ってきました。 それには許可が必要なのですか。 無知で申し訳ありません。
can110

2018/11/09 09:17

あ、「他社の(当然社外秘の)コード」と解釈してました。 ブログにて公開されているコードなのですね。 厳密にはブログ作成者に問い合わせるのが筋かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問