見出し画像

リサーチに使える!ebayでライバルセラーのsold数の抜き取り(Python スクレイピング )

はじめに

今回は、こちらの動画を参考にして、リサーチに役に立つライバルセラーのSOLDの積み上げを抜き取るツールを作っていく。

必要な環境設定


#lmmlのインポート $ pip install lxml
#BeautifulSoupのインポート pip install beautifulsoup4
#BeautifulSoupのインポート pip install requests

import csv
import requests
from bs4 import BeautifulSoup

まずは、ターミナルで<lmml / beautifulsoup4 / requests>の三つをインストールする。

抜き取るライバルセラーの情報

・タイトル
・商品価格
・売れた個数
・商品のURL

ライバルセラーのURLからHTMLを抜き取る

#商品ページのHTMLの抜き取り
def get_page(url):
   response = requests.get(url)

#HTMlが取得出来なった場合
   if not response.ok:
        print('Server reponded.ok:', response.status_code)

#成功したら、lxmlでHTML ファイルの処理
   else:
     soup = BeautifulSoup(response.text, 'lxml') 
#soupで返す
   return soup

取得したデータからタイトル、値段、売れた個数を抜き取る

#取得したデータからタイトル、値段、売れた個数を抜き取る
def get_detail_data(soup):

#タイトル
 try:
    title_tag = soup.title.text
#取得できなかったら、空白    
 except:
    title_tag = ''
#値段
 try:
    price = soup.find('span',id='prcIsum').text
  
 except:
    price = ''
#売れた個数
 try:
    sold = soup.find('span',class_='vi-qtyS').find('a').text.replace('u', '')
    
 except:
    sold = ''

#変数dataの中に代入
 data ={
   'title' : title_tag,
   'price' : price,
   'sold' : sold
 } 
#dataで返す    
 return data

ライバルセラーの商品リストから商品毎にページを特定

#URLの商品リストから商品ページを特定

def get_index_data(soup):

#商品毎のリンクを抜き取る
 try:
    elems = soup.find_all('a',class_='vip') 
   
 except:
    elems =[]

#商品毎の情報をurlsに代入
 urls = [item.get('href') for item in elems]

#urlsを返す
 return urls 

CSVにデータを出力する

#csvにデータを出力する,関数の呼び出し
def write_csv(data, url):

#output.csvを指定する
#上書きの場合は第二引数をa→wに
 with open('output.csv', 'a') as csvfile:

#CSVファイルを出力して、変数writerに代入
     writer = csv.writer(csvfile)

#横並びで出力
     row = [data['title'], data['price'],data['sold'], url]

#writerowメソッドで一行ずつ書き込む
     writer.writerow(row)

ライバルセラーの商品ページのURLを貼り付ける

#スクレイビン対象のURL
def main():
     url='https://www.ebay.com/sch/m.html?_ssn=trade_lab_japan&_ipg=25&rt=nc&_pgn=1'#⇦ライバルのURLを貼り付け

     
#get_index_data関数で取得したデータを代入
     products = get_index_data(get_page(url))

#productsの中のリンクを一個一個抜き取る
     for link in products:

#商品毎の変数dataを出力
       data = get_detail_data(get_page(link))
       write_csv(data, link)

#魔法のおまじない

if __name__ =='__main__':
      main()

今回は、このセラーさんの商品のデータを確認してみる。

スクリーンショット 2020-03-03 0.50.37

実行結果 

スクリーンショット 2020-03-03 1.01.37

実行したデータを並び替えで見易いようにしました。今回は50件の商品データを抜き取りましたが、処理時間は30秒ほどです。

さいごに

簡単なツールですが、セラー追っかけでリサーチをしている人にはSOLDを積み上げてる商品を効率的に見つけることできます。WEBスクレイピング は物販での作業効率化に、必要不可欠だと思います。Pythonの応用を利かせて、今後も作業を効率化していきたいです。


いいなと思ったら応援しよう!