Heim >Web-Frontend >js-Tutorial >Was ist der Puppenspieler-Crawler? Wie Crawler funktionieren
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.
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.
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!