パペティア・クローラーとは何ですか?クローラーの仕組み

青灯夜游
リリース: 2018-11-19 17:58:58
転載
3924 人が閲覧しました

この記事の内容は、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);
        })
    })
}
ログイン後にコピー
これは簡単な例で、ログインして Cookie を取得し、各リクエストで 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()

を実行すると、ブラウザでログインしたときと同じように HTML でコンテンツを取得できます。 CGI

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 サイトの他の関連記事を参照してください。

ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!