Besoin d'aide sur la syntaxe python lxml pour analyser html
Je suis nouvelle marque de python, et j'ai besoin d'un peu d'aide avec la syntaxe pour la recherche et l'itération à travers des balises html à l'aide de lxml. Voici les cas d'utilisation que je fais affaire avec:
Fichier HTML est assez bien formé (mais pas parfait). A plusieurs tables à l'écran, l'un contenant un ensemble de résultats de recherche, et un pour un en-tête et pied de page. Chaque ligne de résultat contient un lien pour le résultat de la recherche de détails.
- J'ai besoin de trouver le moyen de la table des résultats de recherche les lignes (celui-ci j'ai pu comprendre):
self.mySearchTables = self.mySearchTree.findall(".//table") self.myResultRows = self.mySearchTables[1].findall(".//tr")
- J'ai besoin de trouver les liens contenus dans cette table (c'est là où je suis coincé):
for searchRow in self.myResultRows: searchLink = patentRow.findall(".//a")
Il ne semble pas réellement recherchez le lien éléments.
- J'ai besoin que le texte du lien. J'imagine que ce serait quelque chose comme
searchLink.text
si j'ai effectivement eu le lien éléments dans la première place.
Enfin, dans la référence de l'API pour lxml, je n'ai pas réussi à trouver de l'information sur la recherche et le findall appels. J'ai glané ces à partir de morceaux de code que j'ai trouvé sur google. Ai-je raté quelque chose à la manière de trouver et d'itérer sur des balises HTML à l'aide de lxml?
source d'informationauteur Shaheeb Roshan
Vous devez vous connecter pour publier un commentaire.
Bon, tout d'abord, en ce qui concerne l'analyse du HTML: si vous suivez la recommandation de zweiterlinde et S. Lott, à moins d'utiliser la version de beautifulsoup inclus avec lxml. De cette façon, vous permettra également de récolter les avantages d'un beau xpath ou sélecteur css de l'interface.
Cependant, personnellement, je préfère Ian Bicking de Analyseur HTML inclus dans lxml.
Deuxièmement,
.find()
et.findall()
viennent de lxml en essayant d'être compatible avec ElementTree, et ces deux méthodes sont décrites dans En charge de XPath dans ElementTree.Ces deux fonctions sont assez facile à utiliser, mais ils sont très limitées XPath. Je vous recommande d'essayer d'utiliser la pleine lxml
xpath()
méthode ou, si vous êtes déjà familier avec le CSS, à l'aide de lacssselect()
méthode.Voici quelques exemples, avec une chaîne HTML analysée comme ceci:
L'aide du sélecteur css de la classe de votre programme serait à peu près ressembler à quelque chose comme ceci:
L'équivalent de l'aide de xpath de la méthode:
Est-il une raison pour laquelle vous ne l'utilisez pas Belle Soupe pour ce projet? Il rend imparfaitement formés documents beaucoup plus facile.