1. ホーム
  2. python

[解決済み] Pythonを使って統計トラッキングサイト(cod.tracker.gg)から正しい要素をwebscrapeする方法

2022-03-02 19:23:54

質問

について これ 特定のページ(またはすべての'matches'ページ)の名前を選択すると、その試合の個々の統計を見ることができます。ウェブスクレイピングを使用して、たとえば「kills」統計を取得するにはどうすればよいですか?

私が使っているほとんどのチュートリアルでは、ウェブスクレイピングは簡単なようです。しかし、このサイト、特に「キル数」の項目を検査すると、次のようなものが表示されます。

<span data-v-71c3e2a1 title="Kills" class ="name".

質問1.) data-v-71c3e2a1』とは何ですか?私のhtml,css,webscrapingのチュートリアルでこのようなものを見たことがありません。サイト内の至る所に異なるバリエーションで表示されます。

質問2) それよりも、この部分のキル数をどうやってつかめばいいのでしょうか?scrapyを使ったり、xpathでつかんだりしてみたのですが。

スクレイプシェル https://cod.tracker.gg/warzone/match/1424533688251708994?handle=PatrickPM

<ブロッククオート

response.xpath("//*[@id="app"]/div[3]/div[2]/div/main/div[3]/div[2]/div[2]/div[6]/div[2]/div[3]/div[2]/div[1]/div/div[1]/span[2]").get()

しかし、これは構文エラーを発生させます。

response.xpath("//*[@id="app"])

SyntaxError: 構文が無効です。

response.css("").get() による取得も難しいです。セレンを使ったほうがいいのでしょうか?それとも普通のリクエスト/BS4?何をやってもつかめない。

ありがとうございます。

どのように解決するのですか?

これで必要なデータが返ってきましたか?

import requests


endpoint = "https://api.tracker.gg/api/v1/warzone/matches/1424533688251708994"
r = requests.get(endpoint, params={"handle": "PatrickPM"})
data = r.json()["data"]


いずれにせよ、利用できるものがあればAPIを利用することをお勧めします。BeautifulSoupやseleniumを使うよりずっと簡単です。