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

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

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

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

Q&A

解決済

1回答

687閲覧

【python 3.x jupyter】エラーも何も表示されない場合の対処方法がわからない

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

0グッド

0クリップ

投稿2019/06/25 08:33

編集2019/06/25 09:00

python3を勉強し始めて7日目の初心者です。

python3のスクレイピングに挑戦しているのですが、エラーが表示されなくなってしまったため、エラー個所がわからずに困っています。
コードを切り分けると動作するのですが、一緒にすると何も表示されなくなります。

実行したい機能としては、ページネーション も含めた最下層の全てのページのURLを取得し、その後、各URLから指定したクラス名のタグ内にあるテキストを取得したいです。

【機能1】:ページネーション を含む、全ての最下層ページのURLを取得
【機能2】:特定のURLから、指定したクラスメイのタグ内にあるテキストを取得

エラーが表示されないソースコード【機能1】【機能2】

jupyter

1import sys 2import requests 3import re 4import urllib.request, urllib.error 5from bs4 import BeautifulSoup 6 7 8【機能1】 9def get_href(): 10 i = 1 11 num = 2 12 while i < 48: 13 for num in range(1, 300): 14 zero_i = str(i).zfill(2) 15 base = 'https://www.judo-ch.jp/sekkotsuinsrch/{}/list/{}/' 16 url = base.format(zero_i,num) 17 res = requests.get(url) 18 if res.status_code == 200: 19 html = requests.get(url) 20 soup = BeautifulSoup(html.content,"html.parser") 21 for tag in soup.find_all("h3","shisetsu_name_s"): 22 link = tag.find("a") 23 url = link.get("href") 24 for s_tag in soup.find_all("h3","shisetsu_name"): 25 s_link = s_tag.find("a") 26 s_url = s_link.get("href") 27 links = soup.find_all("a","fa_name") 28 for link in links: 29 l_url = link.get('href') 30 else: 31 break 32 num += 1 33 else: 34 break 35 i += 1 36 37 38【機能2】 39def get_soup(url): 40 html = requests.get(url) 41 return BeautifulSoup(html.content, "html.parser") 42 43def scraping_gh(): 44 45 soup = get_soup(get_href()) 46 47 # 整骨院の名称 48 res_p = soup.find("span", "name") 49 res = res_p.find(text=re.compile("")) 50 print(res.string) 51 # ホームページのURL 52 res_p = soup.find("p", "lnk_url") 53 res = res_p.find(text=re.compile("")) 54 print(res.string) 55 56scraping_gh()

【機能1】【機能2】はそれぞれ動作するのですが、一緒にすると、エラーも表示されなくなってしまいました。
わかる方、教えていただけると幸いです。

動作するソースコード【機能1】

jupyter

1import sys 2import requests 3import re 4import urllib.request, urllib.error 5from bs4 import BeautifulSoup 6 7def get_href(): 8 i = 1 9 num = 2 10 while i < 48: 11 for num in range(1, 300): 12 zero_i = str(i).zfill(2) 13 base = 'https://www.judo-ch.jp/sekkotsuinsrch/{}/list/{}/' 14 url = base.format(zero_i,num) 15 res = requests.get(url) 16 if res.status_code == 200: 17 html = requests.get(url) 18 soup = BeautifulSoup(html.content,"html.parser") 19 for tag in soup.find_all("h3","shisetsu_name_s"): 20 link = tag.find("a") 21 url = link.get("href") 22 print(url) 23 for s_tag in soup.find_all("h3","shisetsu_name"): 24 s_link = s_tag.find("a") 25 s_url = s_link.get("href") 26 print(s_url) 27 links = soup.find_all("a","fa_name") 28 for link in links: 29 l_url = link.get('href') 30 print(l_url) 31 else: 32 break 33 num += 1 34 else: 35 break 36 i += 1 37get_href()

動作するソースコード【機能2】

jupyter

1import sys 2import requests 3import re 4import urllib.request, urllib.error 5from bs4 import BeautifulSoup 6 7def get_soup(url): 8 """URLのSoupを取得する""" 9 html = requests.get(url) 10 return BeautifulSoup(html.content, "html.parser") 11 12def scraping_gh(): 13 """Software Design の情報を取得""" 14 soup = get_soup("https://www.judo-ch.jp/sekkotsuinsrch/13/13201/030637/") 15 16 # 整骨院の名称 17 res_p = soup.find("span", class_="name") 18 res = res_p.find(text=re.compile("")) 19 print(res.string) 20 # ホームページのURL 21 res_p = soup.find("p", class_="lnk_url") 22 res = res_p.find(text=re.compile("")) 23 print(res.string) 24scraping_gh()

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

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

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

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

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

y_waiwai

2019/06/25 08:38

一緒にしたときのコードを提示しましょう
退会済みユーザー

退会済みユーザー

2019/06/25 08:53

すみません、上記が一緒にした時のコードです!
y_waiwai

2019/06/25 08:55

見る限り、このコードのままでは実行できないと思いますが。
退会済みユーザー

退会済みユーザー

2019/06/25 09:00 編集

申し訳ございません。それぞれ切り分けて修正しました。
guest

回答1

0

ベストアンサー

下記で解決しました。

python

1 2import sys 3import requests 4import re 5import urllib.request, urllib.error 6from bs4 import BeautifulSoup 7 8 9i = 1 10num = 2 11while i < 48: 12 for num in range(1, 300): 13 zero_i = str(i).zfill(2) 14 base = 'https://www.judo-ch.jp/sekkotsuinsrch/{}/list/{}/' 15 url = base.format(zero_i,num) 16 res = requests.get(url) 17 if res.status_code == 200: 18 html = requests.get(url) 19 soup = BeautifulSoup(html.content,"html.parser") 20 for tag in soup.find_all("h3","shisetsu_name_s"): 21 link = tag.find("a") 22 url = link.get("href") 23 html = requests.get(url) 24 get_soup = BeautifulSoup(html.content, "html.parser") 25 res_p = get_soup.find("p", "lnk_url") 26 if res_p is not None: 27 print(res_p.text) 28 res_p = get_soup.find("span", "name") 29 if res_p is not None: 30 print(res_p.text) 31 res_p = get_soup.find("dd", "name") 32 if res_p is not None: 33 print(res_p.text) 34 for s_tag in soup.find_all("h3","shisetsu_name"): 35 s_link = s_tag.find("a") 36 s_url = s_link.get("href") 37 html = requests.get(s_url) 38 get_soup = BeautifulSoup(html.content, "html.parser") 39 res_p = get_soup.find("p", "lnk_url") 40 if res_p is not None: 41 print(res_p.text) 42 res_p = get_soup.find("span", "name") 43 if res_p is not None: 44 print(res_p.text) 45 res_p = get_soup.find("dd", "name") 46 if res_p is not None: 47 print(res_p.text) 48 links = soup.find_all("a","fa_name") 49 for link in links: 50 i_url = link.get("href") 51 html = requests.get(i_url) 52 get_soup = BeautifulSoup(html.content, "html.parser") 53 res_p = get_soup.find("p", "lnk_url") 54 if res_p is not None: 55 print(res_p.text) 56 res_p = get_soup.find("span", "name") 57 if res_p is not None: 58 print(res_p.text) 59 res_p = get_soup.find("dd", "name") 60 if res_p is not None: 61 print(res_p.text) 62 else: 63 break 64 num += 1 65 else: 66 break 67 i += 1

投稿2019/06/25 11:17

編集2019/06/25 12:38
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問