前提・実現したいこと
Python初学者のため見当違いな記述があるかもしれませんがご了承ください。
発生している問題・エラーメッセージ
ある販売サイトから商品名や値段を表示するコードを書いていたのですが、関数にしてみようとすると表示が変わってしまいます。以下のコードでは期待した値が表示されます。
期待した値
Nintendo Switch 2019年バッテリー強化版[ネオンブルー・ネオンレッド] JAN:4902370542912 買取価格: 33500円
Nintendo Switch 2019年バッテリー強化版 [グレー] JAN:4902370542905 買取価格: 32000円
Nintendo Switch (赤) マリオカート ライブ ホームサーキット [マリオセット] JAN:4902370545616 買取価格: 7000円
Nintendo Switch (緑) マリオカート ライブ ホームサーキット [ルイージセット] JAN:4902370545753 買取価格: 7000円
Nintendo Switch Lite コーラル JAN:4902370545302 買取価格: 19000円
Nintendo Switch Lite イエロー JAN:4902370542936 買取価格: 19500円
Nintendo Switch Lite グレー JAN:4902370542929 買取価格: 19500円
Nintendo Switch Lite ターコイズ JAN:4902370542943 買取価格: 19500円
Nintendo Switch Lite ザシアンザマゼンタ JAN:4902370544091 買取価格: 19500円
Nintendo Switch あつまれ どうぶつの森セット JAN:4902370545203 買取価格: 39500円
import requests from bs4 import BeautifulSoup url = 'https://gamekaitori.jp/all-goods' response = requests.get(url) response.encoding = response.apparent_encoding bs = BeautifulSoup(response.text, 'html.parser') mainpage_box_list = bs.select('div.sub-pro-box') for pro_border in mainpage_box_list[0].select('div.pro-border'): item_name_tags = pro_border.select('li.sub-pro-name') item_name_tag = item_name_tags[0] item_name = item_name_tag.text.strip() item_jancode_tag = item_name_tags[-1] item_jancode = item_jancode_tag.text.strip() item_price_tags = pro_border.select('li.sub-pro-jia') item_price_tag = item_price_tags[0] item_price = item_price_tag.text.strip() print(item_name, item_jancode, item_price)
しかし、以下のように関数にすると上記の値の一番上の値しか表示されません。
('Nintendo Switch 2019年バッテリー強化版[ネオンブルー・ネオンレッド]', 'JAN:4902370542912', '買取価格: 33500円')
関数でも期待したような値が表示されるためにはどのようにすればよろしいでしょうか。
拙い質問内容で申し訳ありませんがご教授お願いします。
該当のソースコード
import requests from bs4 import BeautifulSoup def main(): session = requests.Session() response = requests.get('url #実際にはURLを入力しています') bs = BeautifulSoup(response.text, 'html.parser') item = scrape_detail_page(response) print(item) def scrape_detail_page(response: requests.Response) -> dict: mainpage_box_list = bs.select('div.sub-pro-box') for pro_border in mainpage_box_list[0].select('div.pro-border'): item_name_tags = pro_border.select('li.sub-pro-name') item_name_tag = item_name_tags[0] item_name = item_name_tag.text.strip() item_jancode_tag = item_name_tags[-1] item_jancode = item_jancode_tag.text.strip() item_price_tags = pro_border.select('li.sub-pro-jia') item_price_tag = item_price_tags[0] item_price = item_price_tag.text.strip() return item_name, item_jancode, item_price if __name__ == '__main__': main()