
リサーチに使える!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()
今回は、このセラーさんの商品のデータを確認してみる。
実行結果
実行したデータを並び替えで見易いようにしました。今回は50件の商品データを抜き取りましたが、処理時間は30秒ほどです。
さいごに
簡単なツールですが、セラー追っかけでリサーチをしている人にはSOLDを積み上げてる商品を効率的に見つけることできます。WEBスクレイピング は物販での作業効率化に、必要不可欠だと思います。Pythonの応用を利かせて、今後も作業を効率化していきたいです。