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()
回答1件