ウェブスクレーピング- nodejs、playwrightとfirebaseを使用してInstagramページからデータをscrape.
14485 ワード
PlayWright、NODEJSとFireBaseとウェブスクレーピングへの導入。
必要条件
このチュートリアルでフォローしたい場合は、次の手順を実行します.
https://firebase.google.com/
何がウェブスクラップですか?
ウェブスクラップは、ウェブサイトからデータを抽出することを指します.この情報
収集され、フォーマット(すなわち、CSV)にエクスポートされます
ユーザ.
ヘッドレスブラウザは何ですか?
あなたは、ヘッドレスブラウザの用語を聞いたかもしれないが、まだそれを知らない
手段.インターネットが我々の背中を得たので、あなたは心配する必要はありません🙂
Headless browsers provide automated control of a web page in an environment
similar to popular web browsers, but are executed via a command-line interface
or using network communication.
wikipedia.
ここではほとんど人気のないヘッドホンブラウザー👇
Puppeteer : 操り人形は
ヘッドのないクロムを制御する高レベルAPIを提供するノードライブラリまたは
DevToolsプロトコルの上のクロムまた、フルを使用するように設定することができます
(非頭のない)クロムまたはクロム.
Playwright : PlayWrightは、開発されたノードライブラリです
マイクロソフトは、単一のAPIでクロム、FirefoxとWebKitを自動化します.劇作家
は、これまでに緑、有能なクロスブラウザーウェブオートメーションを可能にするために造られます.
信頼性と高速.
初期設定🚀
JavaScriptのFireBaseクラウド関数の初期化によって起動します.
firebase init functions
cd functions
npm install playwright
これは、クロム、FirefoxおよびWebKitの脚本家とブラウザのバイナリをインストールします.一旦インストールされるならば、あなたはノードでplaywrightを必要とすることができます.スクリプトと自動化Web
ブラウザの相互作用.
今すぐ私たちのInstagramスクレーパーを作成することができます
ウェブ上のInstagramは反応します.そして、それは我々がどんなダイナミックな内容も見ないことを意味します
Utilのページが完全に読み込まれます.PlayWrightは、Clould機能で利用できます
ランタイム、あなたのサーバー上のクロム/Firefox/WebKitブラウザをスピンすることができます.
それはJavaScriptをレンダリングし、あなたが使用しているブラウザのようなイベントを処理します
今すぐ.
まず、関数は実際のInstagramアカウントにログインします.ページ.型法
を参照してください.一度ログイン
で、特定のユーザー名に移動し、IMGタグをレンダリングするのを待つ
その後、src属性をscrapeします.
const functions = require('firebase-functions');
const playwright = require('playwright');
exports.scrapeImages = functions.https.onRequest(async (req, res) => {
// Randomly select a browser
// You can also specify a single browser that you prefer
for (const browserType of ['firefox', 'chromium', 'webkit']) {
console.log(browserType); // To know the chosen one 😁
const browser = await playwright[browserType].launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://www.instagram.com/accounts/login/');
await page.waitForSelector('[type=submit]', {
state: 'visible',
});
// You can also take screenshots of pages
await page.screenshot({
path: `ig-sign-in.png`,
});
await page.type('[name=username]', '<your-username>'); // ->
await page.type('[type="password"]', '<your-password>'); // ->
await page.click('[type=submit]');
await page.waitForSelector('[placeholder=Search]', { state: 'visible' });
await page.goto(`https://www.instagram.com/<your-username>`); // ->
await page.waitForSelector('img', {
state: 'visible',
});
await page.screenshot({ path: `profile.png` });
// Execute code in the DOM
const data = await page.evaluate(() => {
const images = document.querySelectorAll('img');
const urls = Array.from(images).map((v) => v.src);
return urls;
});
await browser.close();
console.log(data);
// Return the data in form of json
return res.status(200).json(data);
}
});
Replace highlighted fields with valid credentials.
今、APIをテストし、APIを必要とすることをする必要があります
デバッグツールとInsomnia だってだから
私は今まで使用している最高のAPIツールと機能のトンを持っています.また、使用することができます
ツールPostman .
devサーバを起動します.
npm run serve
不眠症を開いて、あなたのFirebasedevサーバ.
例
http://localhost:5001/playwright-faecb/us-central1/scrapeImages
上記のイメージでは、応答JSONデータ黄色で色を見ることができます
右側.それはあなたの個人イメージを指すURLの配列です
Instagramページ.
私たちが何をしているかをよりよく理解するために一歩一歩を振り回しましょう。
PlayWrightは3つの異なるブラウザータイプを提供します
同時に.
['chromium', 'firefox', 'webkit']
. 我々は、起動方法を使用して新しいブラウザを起動します.
新しいブラウザコンテキストを作成します.エー
Browser context
ブラウザで新しいタブを作成するような大部分の操作を提供します.
メソッドは指定したURLパスに移動します.
ブラウザーに存在する要素を待つかどうか.
現在のページのスクリーンショットを取得します.
フォームフィールドを埋める能力を提供します.
DOMの要素またはページをクリックすることができます.
あなたはこの関数のコールバックでたくさん行うことができますしかし、我々だけです
復帰
src
コールバック内の各イメージの値.既に知っている私たちの現在のブラウザを破壊します.
我々はコンソールでそれをログ出力して、JSONストリングとしてそれを返しています
200の応答は、それがどのように見えるかを参照してください.
結論
ほとんどの回悪い男は、このテクニックを不正にデータを抽出するために適用されます
ウェブサイトと私は、これを読んでいる人が彼らのうちの1つでないとかなり確信します.
Always remember to Use your code for good 🙂
コンプリートコードhttps://github.com/dnature/playwright-example
私はあなたがこの助けを見つける願っています.
ハッピーコーディング💻 🙂.
他の技術関連の記事についてはブログをチェックしてください.https://divinehycenth.com/blog
Reference
この問題について(ウェブスクレーピング- nodejs、playwrightとfirebaseを使用してInstagramページからデータをscrape.), 我々は、より多くの情報をここで見つけました https://dev.to/dnature/web-scraping-scrape-data-from-your-instagram-page-with-nodejs-playwright-and-firebase-29d1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol