SHEINの商品データをスクレイピングしてみる

記事
IT・テクノロジー
こんにちは😃 ノアです😀

今回は、ECサイト「SHEIN」の商品のデータ収集を行い、CSVに出力するpythonのコードを書いたので紹介します🥺

また、当アカウントではスクレイピングのサービスを出品していますので興味がある方は気軽にご相談ください🍉


やることは大まかに以下の3つです
 ・「レディース アパレル」カテゴリを指定して、「dress」で検索し、その検索結果から商品のURLを取得
 ・そのURLにそれぞれアクセスして、商品ページから「商品名」、「値段」、「SKU」、「平均評価」、「URL」を取得する
 ・そのデータをCSVに出力する

■データ収集する理由は?

Sheinの商品データを収集するメリット
1. 競争分析と市場調査
2. トレンドの把握
3. 顧客の嗜好の理解
4. 価格戦略の最適化
5. 広告・マーケティング戦略の改善

などマーケティング面で得られるメリットがたくさんあります。

全体のコード
import csv
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys as keys
from selenium.webdriver.common.by import By

driver = None

def setup_webdriver():
    global driver
    ### Google Chromeのフォルダをコピーすることで、スクレイピング専用ブラウザにできます
    CHROMEDRIVER = r"C:\stuff\apps\webdriver\Google\Chrome\Application\chrome.exe" # Google Chromeを使用
    CHROMEUSERDATA = r"C:\stuff\apps\webdriver\Google\Chrome\Application\User Data" # User Dataを指定

    chrome_service = Service(executable_path=CHROMEDRIVER)

    options = webdriver.ChromeOptions()
    options.add_argument(f'service={chrome_service}')
    options.add_argument(f'--user-data-dir={CHROMEUSERDATA}')
    options.add_argument('--profile-directory=Profile 1')
    # options.add_argument('--incognito')
    # options.add_argument('--headless')
    # options.add_argument('--no-sandbox')

    driver = webdriver.Chrome(options=options)

def get_product_urls():
    ### カテゴリ: レディース アパレル
    ### キーワード:dress
    url = 'httpsME://jp.shein.com/pdsearch/dress/?child_cat_id=4436&page=1'
    driver.get(url)

    product_urls = []
    el_products = driver.find_elements(By.CSS_SELECTOR, ".S-product-item__link")

    for elem_product in el_products:
        product_urls.append(elem_product.get_attribute("href"))

    return product_urls

def get_product_listing(product_url):
    driver.get(product_url)

    el_product_title = driver.find_element(By.CSS_SELECTOR, ".product-intro__head-name")
    el_product_price = driver.find_element(By.CSS_SELECTOR, ".product-intro__head-mainprice span")
    el_product_sku = driver.find_element(By.CSS_SELECTOR, ".product-intro__head-sku")
    el_product_rate_num = driver.find_element(By.CSS_SELECTOR, ".rate-num")

    product_title = el_product_title.text
    product_price = el_product_price.text
    product_sku = el_product_sku.text.replace('SKU: ', '')
    product_rate = el_product_rate_num.text

    return [product_title, product_price, product_sku, product_rate, product_url]

setup_webdriver()

product_list = []
product_urls = get_product_urls()

max_product_fetch = 20 # 1ページに120の商品が現れるので、20商品に減らす

for product_url in (product_urls[0:max_product_fetch] if len(product_urls) >= max_product_fetch else product_urls):
    product_list.append(get_product_listing(product_url))

# csvに出力
with open('listing.csv', 'w', newline="", encoding="utf-8") as f:
    writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
    writer.writerow(['商品名', '値段', 'SKU','平均評価', 'URL'])
    writer.writerows(product_list)

プログラムを実行する前に、「httpsME」を「https」に置き換えてください😏

プログラム実行後に、同じディレクトリに「listing.csv」が出力されるので、それを今回はスプレッドシートにインポートしました。
image #1.png


スクレイピングを実際に行っている動画
意外とすんなり、データ収集が出来ました!
SHEINのみならず他にもECサイトはたくさんあるので、今後のブログ記事でも挑戦してみたいなと思っております!

上記で紹介しているように、当アカウントではスクレイピングのサービスを出品していますので興味がある方は気軽にご相談ください!

お読みいただきありがとうございました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す