前提・実現したいこと
複数のクリニックのページURLをリストに入れて、
それぞれのクリニックのもっている各プラン詳細ページの情報(プランの料金、プラン名、施術時間など)を取得したい。
リストにいれるURL例:https://clinic.beauty.hotpepper.jp/H000481998/treatment-menus/
各プラン詳細ページ例:
■上記URLの「検査」を押下した先のページ
https://clinic.beauty.hotpepper.jp/H000481998/treatment-menus/52838/?couponId=52838&cstt=1
■上記URLの「オーダーメイドAGA発毛メソセラピー」を押下した先のページ
https://clinic.beauty.hotpepper.jp/H000481998/treatment-menus/52839/?couponId=52839&cstt=2
同様に、プランは全部で9件あるので対象URLは9件
発生している問題・エラーメッセージ
リストに入れた2つのURLそれぞれが持つ
すべてのプラン詳細URLにアクセスして情報(プランの料金、プラン名、施術時間など)を取得することができてない。
おそらくループ処理がうまく行っていないのですが、回避方法がわからず。。
どなたかおわかりの方いましたらお助けいただけますと幸いです。
該当のソースコード
python
1 2from bs4 import BeautifulSoup 3import requests 4import pandas as pd 5import time 6 7links = [ 8"https://clinic.beauty.hotpepper.jp/H000481998/treatment-menus/", 9"https://clinic.beauty.hotpepper.jp/H000482096/treatment-menus/", 10] 11 12#linksに入れたURLをrequests→parser 13 14for i in range(len(links)): 15 16 r = requests.get(links[i]) 17 time.sleep(3) 18 soup = BeautifulSoup(r.text,'html.parser') 19 20 url_list= soup.find_all("a", class_ = "treatment-menu__link") 21 print(url_list) 22 23 #url_listからhref属性だけを取り出す(この時点でリストに入れた片方の詳細URLしかとれてない?) 24 urls = [] 25 for n in range(len(url_list)): 26 try: 27 link_ = url_list[n].get('href') 28 urls.append(link_) 29 except: 30 pass 31 32 #各プランの詳細ページURL生成 33 new_urls = [] 34 for i in range(5): 35 url = urls[i] 36 new_url = "https://clinic.beauty.hotpepper.jp"+url 37 print(new_url) 38 new_urls.append(new_url) 39 40 #詳細ページURLのパース 41 for n in range(len(new_urls)): 42 43 r = requests.get(new_urls[n]) 44 time.sleep(3) 45 soup = BeautifulSoup(r.text,'html.parser') 46 47 #ここから各プラン詳細ページの情報取得 48 detail = soup.find(class_ = "l-container") 49 50 plan_name = soup.find(class_ = "menu-summary__treatment-menu-name").text 51 #print(detail) 52 plan_name 53 54 55 56 #for m in range(len(detail)): 57 #name = detail[m].find(class_ = "menu-summary__treatment-menu-name").text 58 #print(name)
補足情報(FW/ツールのバージョンなど)
Google colabを使用
回答1件
あなたの回答
tips
プレビュー