前提・実現したいこと
python初心者です。
今回、pythonを用いてスクレイピングを実装しようとしたところ、つまづきました。
https://www.judo-ch.jp/sekkotsuinsrch/
上記のサイトの最下層ページ(例:https://www.judo-ch.jp/sekkotsuinsrch/13/13111/030318/)を全て取得し、下記2つの項目を取得したいです。
・会社名(<span class="name"></span>)
・URL(<span class="name"></span>)
最終的にはcsvファイルに出力します。
(今回の質問は、CSVファイルに出力する前の段階です。)
質問の内容
【機能1】最下層ページの一覧情報が記載されているページの取得
(例:https://www.judo-ch.jp/sekkotsuinsrch/01/list/2/)
【機能2】下層ページ(上記のURL)から最下層ページ情報の取得
それぞれ別のコードで書いた段階では、問題なく動作しました。
しかし、【機能1】と【機能2】を繋ぎ合わせたコードを書いたのですが、何も出力されませんでした。
【機能1】のコード→問題なく動作
jupyter
1from bs4 import BeautifulSoup 2import sys 3import time 4import requests 5import re 6time.sleep(2.0) 7 8num = 2 9i = 1 10r = str(i).zfill(2) 11 12while i < 47: 13 url = 'https://www.judo-ch.jp/sekkotsuinsrch/' + str(r) + '/list/' + str(num) + '/' 14 res = requests.get(url) 15 if res.status_code == 200: 16 print(url) 17 num += 1 18 else: 19 i += 1
【機能2】のコード→問題なく動作
jupyter
1url = 'https://www.judo-ch.jp/sekkotsuinsrch/13/list/2/' 2res = requests.get(url) 3soup = BeautifulSoup(res.text,'lxml') 4links = soup.findAll('a', class_="fa_name") 5for link in links: 6 print(link.get('href'))
【機能1】+【機能2】→何も出力されない
jupyter
1from bs4 import BeautifulSoup 2import sys 3import time 4import requests 5import re 6time.sleep(2.0) 7 8num = 2 9i = 1 10r = str(i).zfill(2) 11 12while i < 47: 13 url = 'https://www.judo-ch.jp/sekkotsuinsrch/' + str(r) + '/list/' + str(num) + '/' 14 res = requests.get(url) 15 if res.status_code == 200: 16 soup = BeautifulSoup(res.text,'lxml') 17 links = soup.findAll('a', class_="fa_name") 18 for link in links: 19 print(link.get('href')) 20 num += 1 21 else: 22 i += 1
また、上記をクリアしたら、最後に【機能3】を追加する予定です。
【機能3】最下層ページから「会社名」と「URL」を取得→問題なく動作
jupyter
1def get_soup(url): 2 """URLのSoupを取得する""" 3 html = requests.get(url) 4 return BeautifulSoup(html.content, "html.parser") 5 6def scraping_gh(): 7 """Software Design の情報を取得""" 8 soup = get_soup("https://www.judo-ch.jp/sekkotsuinsrch/13/13201/030637/") 9 10 # 整骨院の名称 11 res_p = soup.find("span", class_="name") 12 res = res_p.find(text=re.compile("")) 13 print(res.string) 14 # ホームページのURL 15 res_p = soup.find("p", class_="lnk_url") 16 res = res_p.find(text=re.compile("")) 17 print(res.string) 18scraping_gh()
試したこと
while i < 47: → for i in range(47):
とやってみたり、わかる範囲で色々やりましたがダメでした。
【機能1】と【機能2】を組み合わせるフェーズで、どこが間違っているか教えていただけると幸いです。
どうぞ、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。