国際信州大学のページタイトルとニュース一覧をスクレイピングを行います。
国際信州大学のホームページ
また事前に、ChromeDriverとGoogle Chromeのインストールが完了していることを前提に行います。
使用技術
- TypeScript
- Node.js
- Selenium
- WSL2(Ubuntu)
初期化処理
- Google Chromeの設定:
init
- スクレイピング先のURLの設定:
setUrl
import { Builder, By, Capabilities, WebDriver } from 'selenium-webdriver';
let webDriver: WebDriver | null = null;
/**
* 初期化処理
*/
const init = async () => {
webDriver = await new Builder()
// Chrome起動時のオプションの設定
.withCapabilities(Capabilities.chrome().set('chromeOptions', {
args: [
'--headless',
'--no-sandbox'
],
w3c: false
}
))
.build();
};
/**
* スクレイピング先のURLの設定
*/
const setUrl = async (url: string) => {
if (webDriver) {
await webDriver.get(url);
}
}
/**
* メイン関数
*
*/
const main = async () => {
await init();
await setUrl('https://kokushin-u.jp/');
};
main();
タイトルの取得
// タイトル取得
console.log(await webDriver.getTitle());
ニュース一覧の取得
forEach
で、一覧化されたニュースを、一つずつ内容を表示します。
const news = await webDriver.findElements(By.className('post'));
news.forEach(async (element) => {
console.log(await element.getText());
});
最終的なコード
import { Builder, By, Capabilities, WebDriver } from 'selenium-webdriver';
let webDriver: WebDriver | null = null;
/**
* 初期化処理
*/
const init = async () => {
webDriver = await new Builder()
// Chrome起動時のオプションの設定
.withCapabilities(Capabilities.chrome().set('chromeOptions', {
args: [
'--headless',
'--no-sandbox'
],
w3c: false
}
))
.build();
};
/**
* スクレイピング先のURLの設定
*/
const setUrl = async (url: string) => {
if (webDriver) {
await webDriver.get(url);
}
}
/**
* メイン関数
*
* @returns
*/
const main = async () => {
await init();
await setUrl('https://kokushin-u.jp/');
if (!webDriver) return;
// タイトル取得
console.log(await webDriver.getTitle());
// ニュース一覧取得
const news = await webDriver.findElements(By.className('post'));
// ニュース内容の表示
news.forEach(async (element) => {
console.log(await element.getText());
});
};
main();