
XPath pour capturer les données du roi d'à côté
Le vieux fer à repasser des crawlers a dû rencontrer ce scénario : on regarde évidemment la structure de la page web qui est très claire, on veut vraiment localiser les éléments mais on se retrouve comme dans un labyrinthe. En particulier lorsqu'ils rencontrent des tableaux de données, des listes de produitsLes éléments des pairs s'accumulentla technique de positionnement des frères et sœurs de XPath est votre hache d'ouverture.
Comme un marronnier, un site de commerce électronique a des prix cachés dans le site.class="prix"dans la travée, mais à côté, il y a uneclass="faux prix". C'est le moment d'utiliser lefrère ou sœur suivant(e)L'axe sera en mesure de déterminer le prix réel, tout comme la cueillette d'une pastèque au marché, il faut être capable de frapper des mains et d'écouter le son.
//div[@class='product']/span[@class='title']/following-sibling::span[1]
Les IP proxy permettent aux robots d'indexation de rester stables comme de vieux chiens
Cependant, XPath n'est pas suffisant, de nombreux sites web sont plus stricts que les anti-voyous pour empêcher les crawlers. Il y a deux jours, il y a un frère comparateur de prix, 20 demandes consécutives d'être bloqué IP, angoissé droit à l'arrachage de cheveux. C'est le moment deProxy résidentiel dynamique pour ipipgoSur le terrain, son pool d'adresses IP est plus important que celui de Wanda Plaza, chaque demande change aléatoirement d'armure, le site ne peut pas faire la distinction entre une personne et un crawler.
La configuration en direct est très simple (n'oubliez pas de remplacer le nom d'utilisateur et le mot de passe par votre propre compte) :
demandes d'importation
proxies = {
'http' : 'http://username:password@gateway.ipipgo.com:9021',
'https' : 'http://username:password@gateway.ipipgo.com:9021'
}
resp = requests.get('https://目标网站', proxies=proxies)
Mallette pratique Gold Match
Supposons que nous voulions obtenir des informations sur un spectacle sur un site de vente de billets, et que la structure de la page ressemble à ceci :
| élémentaire | propriété diagnostique |
|---|---|
| Nom du spectacle | balise h3 + class= "event-title" |
| temps de performance | La première balise p qui suit immédiatement le nom |
| tarifs | La portée de la deuxième balise p |
Avec XPath, les axes frères peuvent être saisis comme suit :
events = response.xpath('//div[@class="events-list"]/div')
pour event dans events.
name = event.xpath('. //h3/text()').get()
time = event.xpath('. //h3/following-sibling::p[1]/text()').get()
prix = event.xpath('. //p[2]/span/text()').get()
Avec l'aide d'ipipgoforfait de facturation à la demandeSi vous définissez un intervalle de 5 secondes entre les requêtes, vous pouvez utiliser une nuit de données de manière régulière, et vous aurez moins de chances de tomber dans la fosse 80% qu'avec un proxy gratuit.
Scène de renversement courante AQ
Q : Que faire si le positionnement XPath est toujours une liste vide ?
R : Vérifiez d'abord si le chargement de l'élément est retardé, utilisez l'outil de développement du navigateur pour reproduire le positionnement. Si le site utilise un anti-crawl, n'oubliez pas d'ajouter Referer et User-Agent dans l'en-tête de la requête, le proxy d'ipipgo est livré avec une fonction de camouflage de l'en-tête de la requête.
Q : Que dois-je faire si l'IP proxy ne parvient soudainement pas à se connecter ?
R : Ajoutez un mécanisme de réessai dans le code, l'API d'ipipgo prend en charge le remplacement automatique des IP défaillantes. Si vous êtes fréquemment déconnecté, nous vous conseillons de passer à la leur.IP résidentielle statique de longue duréeLa stabilité est comparable à celle d'un accès commuté à large bande.
Q : Comment casser des pages web dynamiques ?
R : Sur le navigateur de simulation Selenium ou Playwright, n'oubliez pas de donner à chaque instance de navigateur un proxy différent. ipipgo prend en charge la création de plusieurs sessions de proxy en même temps, une solution parfaite au problème des conflits d'IP dans les fenêtres multiples.
Une dernière chose : les rampants.trois parties de compétences, sept parties d'agence. Ayant utilisé sept ou huit services proxy, ipipgo a vraiment quelque chose à offrir en termes de réactivité et de mécanismes de réessai en cas d'échec, en particulier leurAPI de détection de survie IPIl peut éliminer à l'avance les adresses IP stupides, ce qui évite au programme d'être bloqué à mi-parcours.

