見出し画像

リサーチに使える!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の応用を利かせて、今後も作業を効率化していきたいです。


この記事が気に入ったらサポートをしてみませんか?