Le contenu de cet article est de vous présenter qu'est-ce que le robot marionnettiste ? Comment fonctionnent les robots d'exploration. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Qu'est-ce qu'un marionnettiste ?
Crawler est également appelé robot réseau. Peut-être que vous utilisez des moteurs de recherche tous les jours. Les robots d'exploration constituent une partie importante des moteurs de recherche, explorant le contenu à des fins d'indexation. De nos jours, le Big Data et l’analyse des données sont très populaires. Alors, d’où proviennent les données ? Elles peuvent être explorées via des robots d’exploration Web. Alors laissez-moi parler des robots d'exploration Web.
Comment fonctionne le robot d'exploration
Comme le montre l'image, voici l'organigramme du robot d'exploration. On peut voir que le parcours d'exploration du robot d'exploration est démarré via une URL de départ. En téléchargeant la page Web, le contenu de la page Web est analysé et stocké en même temps. retiré de la duplication et ajouté à la file d'attente en attente d'être exploré. Ensuite, récupérez l'URL suivante en attente d'exploration dans la file d'attente et répétez les étapes ci-dessus. N'est-ce pas très simple ?
Stratégie prioritaire en largeur (BFS) ou en profondeur (DFS)
Il est également mentionné ci-dessus qu'après avoir exploré une page Web, attendez l'exploration Sélectionnez une URL dans la file d’attente à explorer, alors comment choisir ? Devez-vous sélectionner l'URL dans la page Web actuellement explorée ou continuer à sélectionner l'URL du même niveau dans l'URL actuelle ? L'URL de même niveau fait ici référence à l'URL de la même page Web, ce qui constitue la différence entre les stratégies d'exploration.
Stratégie de largeur d'abord (BFS)
La stratégie de largeur d'abord consiste à explorer complètement l'URL d'une page Web actuelle en premier. Ensuite, explorez l'URL analysée à partir de l'URL de la page Web actuelle. Il s'agit de BFS. Si le diagramme de relation ci-dessus représente la relation entre les pages Web, la stratégie d'exploration de BFS sera : (A->(B,D, F. ,G)->(C,F));
Depth First Strategy (DFS)
Depth First Strategy explore une page Web, puis continue d'explorer l'URL analysé à partir de la page Web jusqu'à ce que l'analyse soit terminée.
(A->B->C->D->E->F->G)
Page de téléchargement
Télécharger une page Web semble très simple, tout comme saisir le lien dans le navigateur, et le navigateur l'affichera une fois le téléchargement terminé. Bien entendu, le résultat n’est pas si simple.
Connexion simulée
Pour certaines pages Web, vous devez vous connecter pour voir le contenu de la page Web. Alors, comment le robot se connecte-t-il ? En fait, le processus de connexion consiste à obtenir les identifiants d'accès (cookie, token...)
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); }) }) }
Voici un simple châtaigne, connectez-vous pour obtenir le cookie, puis apportez le cookie à chaque demande .
Obtenir le contenu de la page Web
Certains contenus de pages Web sont rendus côté serveur. Il n'y a pas de CGI pour obtenir des données et le contenu ne peut être analysé qu'à partir de HTML. Cependant, le contenu de certains sites Web n'est pas simple. Le contenu peut être obtenu. Des sites Web comme LinkedIn ne sont pas simplement capables d'obtenir le contenu d'une page Web. La page Web doit être exécutée via le navigateur pour obtenir la structure HTML finale. pour le résoudre ? J'ai mentionné l'exécution du navigateur plus tôt, mais ai-je un navigateur programmable ? Puppeteer, un projet de navigateur sans tête open source de l'équipe Google Chrome, peut utiliser le navigateur sans tête pour simuler l'accès des utilisateurs, obtenir le contenu des pages Web les plus importantes et explorer le contenu.
Utilisez le marionnettiste pour simuler la connexion
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; }
Après avoir exécuté login()
, vous pouvez obtenir le contenu en HTML tout comme vous vous connectez dans le navigateur. Lorsque vous laissez w Oh Meng peut également demander directement 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); // ... }
Comme certains sites Web, le cookie sera le même à chaque fois qu'il sera exploré. Vous pouvez également utiliser un navigateur sans tête pour l'explorer, vous n'aurez donc pas à vous inquiéter à chaque fois. cookies lors de l'exploration.
Écrivez-le à la fin
Bien sûr, les robots d'exploration ne s'occupent pas seulement de ceux-ci, mais analysent également le site Web et trouvent Stratégie d'exploration appropriée. Concernant puppeteer
, il peut être utilisé non seulement pour les robots, mais aussi pour la programmation, les navigateurs sans tête, les tests automatisés, etc.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!