
Que fait vraiment XPath avec les noms de classe ?
Tous ceux qui explorent les données devraient savoir que les éléments d'une page web sont de véritables caméléons, surtout de nos jours où ils sont remplis de
// Un exemple concret
//div[contains(@class,'product-item')]
Comment le proxy IP et XPath se sont-ils rencontrés ?
Avec le service proxy d'ipipgo et XPath pour saisir les données, c'est comme si on donnait au crawler une cape d'invisibilité. Par exemple, si vous voulez connaître le prix d'un site de commerce électronique, le mécanisme anti-escalade des gens a trouvé que vous le visitiez fréquemment, directement à votre IP de la petite maison noire. Cette fois, avec ipipgoAgents résidentiels dynamiquesLe taux de réussite est directement doublé en changeant d'adresse IP de sortie pour chaque demande, ainsi qu'en utilisant un positionnement XPath précis.
Voici une situation réelle : un client avec une IP fixe pour capturer des données, trois jours pour être bloqué. Après avoir changé pour le proxy rotatif d'ipipgo.Deux semaines de fonctionnement continu sans anomalieLa précision du crawl est passée de 481 TP3T à 921 TP3T.
Ne pas marcher sur les trois pieds du positionnement du nom de classe
1) Attention aux noms de classes comportant des espaces : par exemple
2) Nom de classe généré dynamiquement : comme class="ui-component-12345″, cette fois pour récupérer la partie fixe, comme //[contains(@class,'ui-component-')].
3. problèmes de correspondance multiple : il est recommandé d'utiliser des outils de développement pour vérifier que XPath ne correspond pas à plus d'un élément.
Tutoriel de configuration pratique
Prenons l'exemple de l'agent Python + ipipgo :
Importation de requêtes
from lxml import html
proxies = {
'http' : 'http://用户名:密码@gateway.ipipgo.com:9020', 'https' : 'http://用户名:密码@gateway.ipipgo.com:9020'
'https' : 'https://用户名:密码@gateway.ipipgo.com:9020'
}
resp = requests.get('destination URL', proxies=proxies)
tree = html.fromstring(resp.content)
Voici la clé ↓↓
price = tree.xpath('//span[contains(@class, "price-symbol")]/following-sibling::text()')[0]
Cinq questions que vous ne manquerez pas de poser
Q : Que dois-je faire si le nom de la classe change tous les jours ?
R : il faut tenir compte de l'évolution de la législation, il n'est pas possible de s'en remettre à l'ipipgo.Service proxy de rendu JSpeut gérer des contenus chargés de manière dynamique
Q : Comment décomposer la correspondance en plusieurs éléments ?
R : Ajoutez des couches de positionnement, par exemple, trouvez d'abord les caractéristiques fixes de la div extérieure, puis allez vers l'intérieur.
Q : Pourquoi les serveurs mandataires d'ipipgo ne sont-ils pas facilement bloqués ?
R : Sa famille utilise un véritable pool d'adresses IP résidentiel, chaque adresse IP possède des caractéristiques comportementales réelles de l'utilisateur, ce qui est plus fiable que l'adresse IP de la salle des serveurs, à un peu plus d'un demi-point près !
Q : Que dois-je faire si XPath est inefficace ?
R : Combiné à l'utilisation de sélecteurs CSS, de la position de la clé et de la fonction "contient", le logiciel ipipgoProxy haute vitesse exclusifC'est aussi un ralentisseur.
Q : Que dois-je faire si je rencontre un CAPTCHA ?
R : Le proxy IP d'ipipgo est doté d'une fonction de gestion des cookies, avec une randomisation de l'en-tête de la requête, ce qui permet de réduire considérablement le taux de déclenchement des CAPTCHA.
Pourquoi recommandez-vous ipipgo ?
Les données de test réelles parlent : comparer trois fournisseurs de services proxy, en utilisant le même script XPath pour explorer les données d'une plate-forme.
| fournisseur de services | taux de réussite | taux de blocage |
|---|---|---|
| ipipgo | 95% | 2% |
| Entreprise A | 78% | 15% |
| Entreprise B | 82% | 22% |
Une mention spéciale à sa famille.fonction de liste blanche des noms de classeIl peut prédéfinir des règles de noms de classe communs pour s'adapter automatiquement à différentes structures de sites web, ce qui est unique parmi les produits similaires.

