この記事の内容は、puppeteer crourerとは何なのかを紹介するものです。クローラーの仕組み。困っている友人は参考にしていただければ幸いです。
人形遣いとは何ですか?
クローラーはネットワークロボットとも呼ばれます。クローラーは、インデックス作成のためにコンテンツをクロールする、検索エンジンの重要な部分です。現在、ビッグ データとデータ分析が非常に人気があります。では、データはどこから取得されるのでしょうか? Web クローラーを介してクロールすることができます。次に、Web クローラーについて説明します。
#クローラの動作原理
図に示すように、これはフローチャートです。クローラーのクローリングは、Web ページをダウンロードすることによって開始され、同時に Web ページ内の URL が解析されて保存されることがわかります。ページは重複から削除され、クロールを待つキューに追加されます。次に、クロールを待っている次の URL をキューから取得し、上記の手順を繰り返します。非常に簡単ではないでしょうか。幅 (BFS) または深さ (DFS) の優先戦略
Web ページをクロールした後は、クロールを待つことも上で説明しました。クロールする URL をキューから選択します。どのように選択すればよいでしょうか?現在クロールされている Web ページ内の URL を選択する必要がありますか、それとも現在の URL 内の同じレベルの URL を選択し続ける必要がありますか?ここでの同じレベルの URL は、同じ Web ページの URL を指します。これがクロール戦略の違いです。幅優先戦略 (BFS)
幅優先戦略は、最初に現在の Web ページの URL を完全にクロールすることです。次に、現在の Web ページ内の URL からクロールされた URL をクロールします。これが BFS です。上記の関係図が Web ページ間の関係を表す場合、BFS のクロール戦略は次のようになります。 ,G)->(C,F));深さ優先戦略 (DFS)
深さ優先戦略では、Web ページをクロールし、URL のクロールを続行します。クロールが完了するまで Web ページから解析されます。(A->B->C->D->E->F->G)
##ダウンロードページ#Web ページのダウンロードは、ブラウザにリンクを入力するのと同じように非常に簡単に思えます。ダウンロードが完了すると、ブラウザに Web ページが表示されます。もちろん、結果はそれほど単純ではありません。
模擬ログイン
一部の Web ページでは、Web ページのコンテンツを表示するためにログインする必要があります。クローラーはどのようにログインしますか?実際、ログイン プロセスでは、アクセス資格情報 (Cookie、トークン...) を取得します。
let cookie = ''; let j = request.jar() async function login() { if (cookie) { return await Promise.resolve(cookie); } return await new Promise((resolve, reject) => { request.post({ url: 'url', form: { m: 'username', p: 'password', }, jar: j }, function(err, res, body) { if (err) { reject(err); return; } cookie = j.getCookieString('url'); resolve(cookie); }) }) }
Web コンテンツの取得
一部の Web コンテンツはサーバー側でレンダリングされ、データを取得するための CGI はなく、コンテンツは HTML からのみ解析できます。一部の Web サイトのコンテンツは単純ではありません。LinkedIn のような Web サイトでは、Web ページを実行して最終的な HTML 構造を取得する必要があります。先ほどブラウザーの実行について触れましたが、プログラム可能なブラウザーはありますか? Google Chrome チームによるオープンソースのヘッドレス ブラウザ プロジェクトである Puppeteer は、ヘッドレス ブラウザを使用してユーザー アクセスをシミュレートし、最も重要な Web ページのコンテンツを取得し、コンテンツをクロールできます。 puppeteer を使用してログインをシミュレートする
async function login(username, password) { const browser = await puppeteer.launch(); page = await browser.newPage(); await page.setViewport({ width: 1400, height: 1000 }) await page.goto('https://example.cn/login'); console.log(page.url()) await page.focus('input[type=text]'); await page.type(username, { delay: 100 }); await page.focus('input[type=password]'); await page.type(password, { delay: 100 }); await page.$eval("input[type=submit]", el => el.click()); await page.waitForNavigation(); return page; }
login()
async function crawlData(index, data) { let dataUrl = `https://example.cn/company/contacts?count=20&page=${index}&query=&dist=0&cid=${cinfo.cid}&company=${cinfo.encodename}&forcomp=1&searchTokens=&highlight=false&school=&me=&webcname=&webcid=&jsononly=1`; await page.goto(dataUrl); // ... }
を直接リクエストすることもできます。一部の Web サイトと同様、Cookie はクロールするたびに同じになります。ヘッドレス ブラウザを使用してクロールすることもできるため、毎回クロールする必要はありません。クロールするたびに Cookie について心配してください。
最後に書いてくださいもちろん、クローラーはこれらだけではありません。 Web サイトを分析し、適切なクローラー戦略を見つけます。 puppeteer
については、プログラム可能なヘッドレスブラウザや自動テストなどにも使用できるため、クローラーとしてだけでなく使用することもできます。以上がパペティア・クローラーとは何ですか?クローラーの仕組みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。