【Python】ヤフーショッピングのスクレイピング(サーチ結果)データをCSVに書き出す

bs4

先にサーチ結果のURL取得

老眼鏡の商品一覧 通販 - Yahoo!ショッピング
Yahoo!ショッピング | 老眼鏡の商品一覧。お買得な人気商品をランキングやクチコミからも探せます。PayPay支払いで毎日5%貯まる!(上限あり)

2ページ目は、b=31
3ページ目は、b=61
・・・・・・・・・・・・

import requests
from bs4 import BeautifulSoup
import time
import pandas as pd

#サーチ結果
url="https://shopping.yahoo.co.jp/search?aq=&oq=&first=1&ss_first=1&ts=1693379943&mcr=7d44da0a6f631adc7c8bffc702130095&view=grid&tab_ex=commerce&sretry=0&prom=1&p=%E8%80%81%E7%9C%BC%E9%8F%A1&sc_i=shp_pc_search_searchBox_2"
time.sleep(10)

# スクレイピング対象の URL にリクエストを送り HTML を取得する
res = requests.get(url)

# レスポンスの HTML から BeautifulSoup オブジェクトを作る
soup = BeautifulSoup(res.text, 'html.parser')
#print(soup)

columns=['店名','商品名','商品URL','金額']
df = pd.DataFrame([])

# タグのIDが「postbody_wrap」を指定


for elm in soup.find_all(class_="LoopList__item"):

    # ResultSetをfor文で回し、要素のtext属性を参照
    shopName = elm.select("span.SearchResultItemStore_SearchResultItemStore__name__FLcaE")
    itemName = elm.select("div.SearchResult_SearchResult__detailsContainer__FoeCb")
    url = elm.select("a.SearchResult_SearchResult__detailsContainerLink__0hDP4")
    price = elm.select("span.SearchResultItemPrice_SearchResultItemPrice__value__C03NT")

    list = [[shopName[0].text,itemName[0].text, url[0].get('href'),price[0].text]]
    #df=df.append(pd.DataFrame([list], columns=columns), ignore_index=True)
    df_append = pd.DataFrame(data=list, columns=columns)
df = pd.concat([df, df_append], ignore_index=True, axis=0)

#print(shopName[0].text)
#print(itemName[0].text)
#print(url[0].get('href'))
#print(price[0].text)
#print("-----")

print(df)
df.to_csv('to_csv_out.csv')
タイトルとURLをコピーしました