前提・実現したいこと
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はインストールされていることは確認致しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/09 08:12 編集
2018/11/09 08:25
2018/11/09 08:41
2018/11/09 08:51
2018/11/09 09:05
2018/11/09 09:10
2018/11/09 09:13
2018/11/09 09:17