NODEJSと操り人形によるサッカーデータのスクレーピング
私は最近スポーツデータを必要とする状況にありました-特にサッカーデータ.私はいくつかの初期の問題を克服しなければならなかったので、私はこのポストを書いています.あなたは私の考えに従うことができなければならない.
このチュートリアルでは、FleshScoreに遭遇しました.COM、多くのリーグを提供し、備品やライブマッチをカバーするウェブサイト.
私は次の基本スクリプトから始めました.
上記のスクリプトがNODEJSで書かれているので、私はPitpeteerで遊び始めました.そして、それはヘッドレスクロームまたはクロムを制御するために、高レベルAPIを提供するノード・ライブラリです.
しばらくして、次のコードを終えました.
ご覧の通りJSONデータの美しいリストを検索しました.
今、もちろん、リーグ、国などでデータをソートするために費やすことができる多くの仕事があります.
私のユースケースでは、このスニペットは十分でした.あなたがより深刻な掻くことを目指すならば、あなたは一般的なスポーツまたはサッカーAPI(すなわちsportdataapi.com、xmlsoccer.com)を選ぶかもしれません.
ハッピー掻き取り
このチュートリアルでは、FleshScoreに遭遇しました.COM、多くのリーグを提供し、備品やライブマッチをカバーするウェブサイト.
私は次の基本スクリプトから始めました.
const axios = require('axios');
//performing a GET request
axios.get('https://www.flashscore.com/')
.then(response => {
//handling the success
const html = response.data;
console.log(response.data);
})
//handling error
.catch( error => {
console.log(error);
});
スクリプトによって返されることを調査するために、返されたすべての内容をtest.html
ファイルに送りました.node scraper.js > test.html
私のブラウザの中にHTMLファイルを開いた後、私はすぐに、元のウェブサイトに表示されたすべての試合情報は、行方不明だったことに気づいた.これはJavaScriptによってレンダリングされるコンテンツを期待していたので、大きな驚きではなかった.上記のスクリプトがNODEJSで書かれているので、私はPitpeteerで遊び始めました.そして、それはヘッドレスクロームまたはクロムを制御するために、高レベルAPIを提供するノード・ライブラリです.
しばらくして、次のコードを終えました.
const puppeteer = require ('puppeteer');
//initiating Puppeteer
puppeteer
.launch ()
.then (async browser => {
//opening a new page and navigating to Fleshscore
const page = await browser.newPage ();
await page.goto ('https://www.flashscore.com/');
await page.waitForSelector ('body');
//manipulating the page's content
let grabMatches = await page.evaluate (() => {
let allLiveMatches = document.body.querySelectorAll ('.event__match--oneLine');
//storing the post items in an array then selecting for retrieving content
scrapeItems = [];
allLiveMatches.forEach (item => {
let postDescription = '';
try {
let homeTeam = item.querySelector ('.event__participant--home').innerText;
let awayTeam = item.querySelector ('.event__participant--away').innerText;
let currentHomeScore = item.querySelector('.event__scores.fontBold span:nth-of-type(1)').innerText;
let currentAwayScore = item.querySelector('.event__scores.fontBold span:nth-of-type(2)').innerText;
scrapeItems.push ({
homeTeam: homeTeam,
awayTeam: awayTeam,
currentHomeScore: currentHomeScore,
currentAwayScore: currentAwayScore,
});
} catch (err) {}
});
let items = {
"liveMatches": scrapeItems,
};
return items;
});
//outputting the scraped data
console.log (grabMatches);
//closing the browser
await browser.close ();
})
//handling any errors
.catch (function (err) {
console.error (err);
});
さて、次のコマンドでもう一度スクリプトを実行しました.node scraper.js
ご覧の通りJSONデータの美しいリストを検索しました.
今、もちろん、リーグ、国などでデータをソートするために費やすことができる多くの仕事があります.
私のユースケースでは、このスニペットは十分でした.あなたがより深刻な掻くことを目指すならば、あなたは一般的なスポーツまたはサッカーAPI(すなわちsportdataapi.com、xmlsoccer.com)を選ぶかもしれません.
ハッピー掻き取り
Reference
この問題について(NODEJSと操り人形によるサッカーデータのスクレーピング), 我々は、より多くの情報をここで見つけました https://dev.to/andreasa/scraping-soccer-data-with-nodejs-and-puppeteer-3mh2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol