【コードあり】旧PC版のメルカリで商品ページをスクレイピングする方法【python】

追記:旧PC版のメルカリが完全に利用できなくなったのでこのページに関しては完全に過去のものです。ただ他サイトでのスクレイピングでも同様の方法が使えることも多いので、参考のためにそのまま残しておきます。

新しいバージョンのメルカリでのスクレイピング方法に関しては時間があるときにでも記事にする予定です。

————-追記ここまで—————-

pythonを使って旧PC版のメルカリの商品ページをスクレイピングする方法についてです。

商品データを手動で取得するのはかなりの手間ですから、自動でできるならやってしまいたい。

そういうことはpythonが得意なのでやらせてしまおう!と意気込んでコードを書いたもののうまくスクレイピングできないなんてのはよくあることです。

このページでは管理人が以前に開発したメルカリのスクレイピングプログラムの一部を公開しながら、メルカリでスクレイピングする方法について紹介します。

注意点

注意点1:旧デザイン専用の方法

今回ご紹介するのは旧デザインのPCブラウザ版のメルカリ(www.mercari.com)からのスクレイピング方法です。

新デザイン(jp.mercari.com)はここで紹介する方法ではスクレイピングできませんのでご注意ください。

注意点2:違法にならないように注意

規約違反はともかく、ここでご紹介するのは適法の範囲での方法です。

意識することは1.ログインしなくても見れる範囲だけ、2.メルカリのサーバーに負荷をかけない、の2つです。

違法かどうかについては別ページにて解説していますので先に読まれることをお勧めします。

関連ページ:メルカリのスクレイピングに関する規約と違法性について【python】

コード例(BeautifulSoupオブジェクト取得まで)

ここではメルカリの商品ページ(https://www.mercari.com/jp/items/mXXXXXXXXXXX/)にアクセスして、ページのデータを利用しやすいBeautifulSoupオブジェクト(以下BSオブジェクト)にするところまでです。

実際に上記のコードをコピペして動かす場合にはメルカリの商品ページのURLを使ってください。

例でやっていることは以下の通りです。

  1. ユーザーエージェントの偽装
  2. requests.getメソッドでページデータをresponseオブジェクトとして抜き出す
  3. responseオブジェクトを扱いやすいBSオブジェクトに変換する

おそらくスクレイピングをしてみようと思って実際にやってみたらエラーが出て進まないという人は、1のユーザーエージェントの偽装を忘れているのだと思います。

メルカリではブラウザ以外からのアクセスを遮断するようになっています。なので馬鹿正直にpythonから直接アクセスすると以下のようになります。

python「pythonからのアクセスです」

メルカリ「ふざけるな、帰れ」

なのでユーザーエージェントと呼ばれる身分証みたいな部分を偽装して、ブラウザのふりをしながらpythonからアクセスするわけです。コード例ではグーグルクロムからのアクセスっぽくしてあります。

python「Google Chromeから来ました」

メルカリ「(ユーザーエージェントもChromeって書いてあるな)」

メルカリ「通って良し」

BSオブジェクトの中身はほぼhtmlの記述そのままなので、ここまで変換できればあとは欲しい情報をgetやselectを使って抜き出すだけです。

例えばsoup.select(‘td’)とすれば商品情報を抜き出すことができますし、soup.select(‘img.owl-lazy’)とすれば画像のurlを取得することもできます。

コード例2(BSオブジェクトから画像urlの取得)

次に例として1つ目の商品画像のURLを取得してみます。

soupを表示して見てみると、商品画像のhtmlタグにはowl-lazyクラスが指定されていることがわかります。

なのでselectメソッドを使ってその部分をリストとして抜き出します。

抜き出したリストの1番目からURLだけを抜き出すため、リストの1番目(img_list[0])を指定して、URLが入っているdata-srcを抜き出します。

何を言っているのかよくわからない場合でも、細かい理解はとりあえず置いといて、コードをコピペしていろいろ変えてみながら使ってみてください。

いじってれば何となく分かってきます。

商品情報や出品者データなども同じようにしていけば抜き出すことができます。

まとめ

管理人
新バージョンのメルカリは対策されてて実際にブラウザを起動させながらでないとデータ取得は難しいよ!興味がある人はseleniumっていうモジュールを調べてみよう

ちなみにスクレイピングは設定を間違えるとメルカリからアクセス禁止にされる危険と隣り合わせなので、自分のPCじゃなくて仮想デスクトップをレンタルしてそこからそこからスクレイピングする方がオススメです。

それならもし永久アク禁にされても仮想デスクトップをレンタルしなおすだけでまたアクセスすることができます。

詳しくは別ページで解説していますのでそちらを参照してください。

関連ページ:【python】スクレイピングする際のアクセス禁止対策【仮想デスクトップ】

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


ABOUT US
ちくわ
3歳のネザーランドドワーフ♂。中の人は30代の筋トレマニアの宅建士。 大学を卒業後にせどり、アフィリエイト、マルチ商法、不動産営業、仮想通貨などいろいろ手を出した過去がある。まじめに書いてる記事の中でちょくちょく本音がポロリしてる。