Heim >Web-Frontend >js-Tutorial >Was ist der Puppenspieler-Crawler? Wie Crawler funktionieren

Was ist der Puppenspieler-Crawler? Wie Crawler funktionieren

青灯夜游
青灯夜游nach vorne
2018-11-19 17:58:583981Durchsuche

Der Inhalt dieses Artikels besteht darin, Ihnen vorzustellen, was der Puppenspieler-Crawler ist. Wie Crawler funktionieren. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

Was ist ein Puppenspieler?

Crawler wird auch Netzwerkroboter genannt. Vielleicht nutzen Sie täglich Suchmaschinen. Crawler sind ein wichtiger Bestandteil von Suchmaschinen und crawlen Inhalte zur Indexierung. Heutzutage sind Big Data und Datenanalyse sehr beliebt. Woher kommen die Daten? Sie können durch Webcrawler gecrawlt werden. Dann lassen Sie mich über Webcrawler sprechen.

Was ist der Puppenspieler-Crawler? Wie Crawler funktionieren

So funktioniert der Crawler

Wie im Bild gezeigt, ist dies das Flussdiagramm des Crawler. Es ist ersichtlich, dass die Crawling-Reise des Crawlers über eine Seed-URL gestartet wird. Durch das Herunterladen der Webseite wird der Inhalt der Webseite analysiert und gespeichert wird der Warteschlange hinzugefügt und wartet darauf, gecrawlt zu werden, nachdem Duplikate entfernt wurden. Holen Sie sich dann die nächste URL, die darauf wartet, gecrawlt zu werden, aus der Warteschlange und wiederholen Sie die oben genannten Schritte.

Prioritätsstrategie für Breite (BFS) oder Tiefe (DFS)

Oben wurde auch erwähnt, dass nach dem Crawlen einer Webseite auf das Crawlen gewartet werden muss Wählen Sie eine URL aus der Warteschlange aus, die gecrawlt werden soll. Wie wählt man sie aus? Sollten Sie die URL auf der aktuell gecrawlten Webseite auswählen oder weiterhin die gleiche URL-Ebene in der aktuellen URL auswählen? Die URL derselben Ebene bezieht sich hier auf die URL derselben Webseite, was den Unterschied zwischen den Crawling-Strategien ausmacht.

Was ist der Puppenspieler-Crawler? Wie Crawler funktionieren

Breadth First Strategy (BFS)

Die Broadth First Strategie besteht darin, zuerst die URL einer aktuellen Webseite vollständig zu crawlen. Crawlen Sie dann die URL, die von der URL auf der aktuellen Webseite gecrawlt wurde. Wenn das obige Beziehungsdiagramm die Beziehung zwischen Webseiten darstellt, lautet die Crawling-Strategie von BFS: (A->(B,D, F ,G)->(C,F));

Depth First Strategy (DFS)

Depth First Strategy crawlt eine Webseite und fährt dann mit dem Crawlen der URL fort von der Webseite analysiert, bis der Crawl abgeschlossen ist.
(A->B->C->D->E->F->G)

Download-Seite

Das Herunterladen einer Webseite scheint sehr einfach zu sein, genau wie die Eingabe des Links in den Browser, und der Browser zeigt ihn an, nachdem der Download abgeschlossen ist. Natürlich ist das Ergebnis nicht so einfach.

Simulierte Anmeldung

Bei einigen Webseiten müssen Sie sich anmelden, um den Inhalt der Webseite anzuzeigen. Wie meldet sich der Crawler an? Tatsächlich besteht der Anmeldevorgang darin, die Zugangsdaten (Cookie, Token ...) zu erhalten.

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);
        })
    })
}

Hier ist eine einfache Kastanie: Melden Sie sich an, um das Cookie zu erhalten, und bringen Sie dann das Cookie bei jeder Anfrage mit.

Webinhalte abrufen

Einige Webinhalte werden auf der Serverseite gerendert. Es gibt kein CGI zum Abrufen von Daten und der Inhalt kann nur aus HTML analysiert werden Der Inhalt einiger Websites ist nicht einfach. Websites wie LinkedIn können den Inhalt einer Webseite nicht einfach abrufen, um die endgültige HTML-Struktur zu erhalten. Ich habe die Browserausführung bereits erwähnt, aber habe ich einen programmierbaren Browser? Puppeteer, ein Open-Source-Headless-Browser-Projekt des Google Chrome-Teams, kann den Headless-Browser verwenden, um den Benutzerzugriff zu simulieren, den Inhalt der wichtigsten Webseiten abzurufen und den Inhalt zu crawlen.
Verwenden Sie den Puppenspieler, um die Anmeldung zu simulieren

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;
}

Nachdem Sie login() ausgeführt haben, können Sie sich im Browser anmelden und den Inhalt im HTML-Format abrufen. Sie können CGI auch direkt anfordern >

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);
                    // ...
                }
Wie bei einigen Websites ist das Cookie jedes Mal dasselbe, wenn Sie es crawlen. Sie können es auch mit einem Headless-Browser crawlen, sodass Sie es nicht jedes Mal crawlen müssen. Sorgen Sie sich um Cookies

Schreiben Sie es am Ende

Natürlich sind Crawler nicht nur das, es geht vielmehr darum, die Website zu analysieren und eine passende Crawler-Strategie zu finden. Bezüglich

kann es nicht nur für Crawler, sondern auch für Programmierung, Headless-Browser, automatisierte Tests usw. verwendet werden. puppeteer

Das obige ist der detaillierte Inhalt vonWas ist der Puppenspieler-Crawler? Wie Crawler funktionieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen