島根県安来市のフリーランスエンジニア_プログラマー画像1
メルカリせどりツールをPythonで開発 | Streamlit実装完全ガイド – Eatransform

メルカリせどりツールをPythonで開発 | Streamlit実装完全ガイド

背景:MacBook探しから生まれたツール

きっかけは、自分用のMacBookを探していたことでした。3年くらい前のモデルで十分だと考え、メルカリで中古のMacBook Air M2を探し始めました。

しかし、探しているうちに気づいたんです。メルカリとAmazonで同じ商品の価格差が結構あるということに。

例えば:

  • メルカリ: MacBook Air M2 13インチ → 95,000円
  • Amazon整備済み品: 同じモデル → 118,000円
  • 価格差: 23,000円!

「これ、自分が買うだけじゃなくて、安く仕入れて高く売れるんじゃない?」

そう思った瞬間、これってせどりだと気づきました。でも、手動で価格差のある商品を探すのは大変です:

  • メルカリで商品を1つずつ確認
  • 気になったものをAmazonで検索
  • 価格を比較して、手数料や送料を計算
  • これを何十回も繰り返す…

「この作業、絶対自動化できるよね」と思い、エンジニアの性でツールを作ってしまおうと決めました。

完成したシステム

検索結果画面

メルカリせどりツール検索結果画面 - Streamlitアプリケーション

Streamlitを使用したWebアプリケーション。検索条件を設定してワンクリックで検索実行。メルカリから取得した商品データと利益計算結果をリアルタイムで表示します。

実装できた主な機能

  • メルカリ自動検索: キーワード、価格範囲、商品状態などの条件で絞り込み検索
  • 利益自動計算: プラットフォーム手数料と送料を考慮した正確な利益計算
  • データ可視化: 価格分布、販売状況、利益ランキングをグラフ表示
  • Excel出力: 検索結果をExcelファイルとして保存
  • 検索履歴管理: 過去の検索条件を保存・再利用

開発で苦労したポイント

✅ 成功: Amazon価格の完全自動取得

目標: メルカリとAmazonの両方から価格を自動取得し、利益を計算する完全自動システム

挑戦: Amazonのbot対策が厳しく、当初は成功率が低かった

結果: 試行錯誤の末、完全自動化に成功!実用レベルの精度を達成

Amazon価格取得の技術的ブレークスルー

当初は困難だったAmazon価格の自動取得ですが、以下のアプローチで完全自動化に成功しました:

  • 動的セレクタの実装: 複数のセレクタパターンを試行し、最も成功率の高いパターンを特定
  • 待機時間の最適化: JavaScriptによる動的コンテンツの読み込みを正確に待機
  • リトライロジックの実装: 失敗時に別の手法で再試行する仕組みを構築
  • レート制限の回避: 適切な間隔とランダム性を持たせたアクセスパターン
# Amazon価格取得の成功実装 def search_product(self, keyword): # 動的コンテンツの読み込み待機 WebDriverWait(self.driver, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, ‘span.a-price’) ) ) # 価格要素を取得 price_elem = self.driver.find_element( By.CSS_SELECTOR, ‘span.a-price-whole’ ) price = int(re.sub(r‘[^\d]’, , price_elem.text)) return price

この実装により、成功率90%以上を達成しました。

❌ 課題2: メルカリのbot検出

問題: 通常のSeleniumではメルカリ側で自動化を検出され、「ブラウザが対応していない」というエラーが表示される

解決策: undetected-chromedriverを使用することで検出を回避

# 通常のSelenium → 検出される driver = webdriver.Chrome() # undetected-chromedriver → 回避 import undetected_chromedriver as uc driver = uc.Chrome()

❌ 課題3: 動的コンテンツの読み込み待機

問題: メルカリはReactベースのSPA。ページ遷移しても商品データがすぐには表示されない

解決策: スクロールによる遅延読み込み、ランダムな待機時間を設定

# 人間らしいスクロール動作 while len(products) < max_items: scroll = random.randint(500, 800) self.driver.execute_script( f”window.scrollBy(0, {scroll});” ) time.sleep(random.uniform(1.5, 3))

技術スタック

Streamlit

WebアプリのUI構築。Pythonだけで完結し、開発速度が非常に速い。

undetected-chromedriver

bot検出を回避するための特殊なChromeDriver。通常のSeleniumより検出されにくい。

Pandas

データ処理とExcel出力。取得したデータを効率的に操作。

Plotly

インタラクティブなグラフ作成。価格分布や利益ランキングの可視化。

コア実装の詳細

メルカリスクレイピングの実装

def search_mercari(self, keyword, max_items=30): # URL構築 url = f”https://jp.mercari.com/search?” url += f”keyword={keyword}&sort=price_asc” self.driver.get(url) # スクロールしながら商品を取得 products = [] while len(products) < max_items: links = self.driver.find_elements( By.CSS_SELECTOR, ‘a[href*=”/item/”]’ ) for link in links: data = self._extract_product_data(link) if data: products.append(data) # ページをスクロール self.driver.execute_script( “window.scrollBy(0, 800);” ) return products

利益計算ロジック

def calculate_profit( self, purchase_price, selling_price ): # プラットフォーム手数料 fee_rate = 0.15 # Amazon 15% fee = selling_price * fee_rate shipping = 300 # 利益計算 profit = selling_price – purchase_price profit = profit – fee – shipping # ROI(投資利益率) roi = (profit / purchase_price * 100) return { ‘profit’: int(profit), ‘roi’: round(roi, 1) }

Streamlit UIの構築

# サイドバーで検索条件を設定 with st.sidebar: keyword = st.text_input(“検索キーワード”) price_min = st.number_input(“最低価格”) max_items = st.slider(“取得件数”, 5, 50) # 検索実行 if st.button(“検索開始”): results = scraper.search_mercari( keyword=keyword, max_items=max_items ) st.success(f”✅ {len(results)}件取得完了!”)

最終的な仕様と妥協点

✅ 実装できた機能

  • メルカリの商品検索・データ取得(成功率: ほぼ100%)
  • Amazonの価格自動取得(成功率: 90%以上)
  • 完全自動の利益計算(メルカリ→Amazon)
  • 条件による絞り込み(価格、カテゴリー、除外キーワード)
  • データの可視化(グラフ、統計)
  • Excel出力機能
  • 検索履歴の保存

⚠️ 今後の課題

  • さらなる成功率の向上(95%以上を目指す)
  • 複数プラットフォームの同時検索
  • 価格推移の自動追跡
  • より高速な処理

完全自動化システムの動作フロー

実装した完全自動システムは以下のように動作します:

  1. メルカリ検索: 完全自動(10-30件を30秒程度で取得)
  2. Amazon価格取得: 完全自動(各商品の価格を自動取得)
  3. 利益計算: 自動(取得した価格から即座に計算)
  4. データ整理: 自動(Excel出力、グラフ生成)

この方式により、完全手動と比較して作業時間を約95%削減し、人の手をほぼ必要としないシステムを実現しました。

同様の自動化ツール開発について

今回のようなWebスクレイピングツールや業務自動化システムの開発を承っています。価格監視、在庫チェック、データ収集、レポート自動生成など、繰り返し作業の自動化についてお気軽にお問い合わせフォームからご相談ください。

放置されたWordPressサイトは「健康診断をサボり続けた人」と同じ

政治家発言アーカイブ | 自動収集システムで国会・ニュース・SNSを一元管理