Rechercher et Remplacer dans le HTML avec BeautifulSoup
Je veux utiliser BeautfulSoup pour rechercher et remplacer des <\a>
avec <\a><br>
. Je sais comment l'ouvrir avec urllib2
et ensuite d'analyser pour en extraire tous les <a>
balises. Ce que je veux faire est de rechercher et de remplacer la balise de fermeture avec la balise de fermeture en plus de la pause. Toute aide, beaucoup apprécié.
MODIFIER
Je suppose que ce serait quelque chose de similaire à:
soup.findAll('a').
Dans la documentation, il y a un:
find(text="ahh").replaceWith('Hooray')
Donc, je suppose que ce serait le long des lignes de:
soup.findAll(tag = '</a>').replaceWith(tag = '</a><br>')
Mais cela ne fonctionne pas et le python() ne donne pas beaucoup
OriginalL'auteur Kevin | 2010-01-15
Vous devez vous connecter pour publier un commentaire.
Cela permettra d'insérer un
<br>
tag après la fin de chaque<a>...</a>
élément:Vous ne pouvez pas utiliser
soup.findAll(tag = '</a>')
parce que BeautifulSoup ne fonctionne pas sur les balises de fin séparément, ils sont considérés comme faisant partie d'un même élément.Si vous voulais mettre la
<a>
éléments à l'intérieur d'un<p>
élément que vous demander dans un commentaire, vous pouvez utiliser ceci:Encore une fois, vous ne créez pas la
<p>
et</p>
séparément parce qu'ils font partie de la même chose.Voir mon edit - Il est ajouté après l'ensemble de la <a>...</a> élément, donc, effectivement, il sera seulement après le </a>.
Est BeautifulSoup.Tag valide? J'obtiens une erreur lorsque vous essayez ce code.
Il dépend de la façon dont vous importer le module. J'ai édité pour montrer une façon dont il peut travailler - essayez-le maintenant.
FWIW, il devrait être
a.parent.content.index
OriginalL'auteur interjay
supposons que vous avez un élément qui, vous le savez contient le "br" balises de marquage, un moyen de supprimer & remplacer le "br" tags avec une chaîne de caractère est comme ceci:
OriginalL'auteur Achintya Ashok
Vous ne remplacez pas une balise de fin; dans BeautifulSoup vous avez affaire à un modèle d'objet de document comme dans un navigateur, pas une chaîne complète de HTML. Donc, vous ne pouviez pas "remplacer" une balise de fin sans remplacer la balise de début.
Ce que vous voulez faire est d'insérer une nouvelle
<br>
élément immédiatement après la<a>...</a>
élément. Pour ce faire, vous aurez besoin de connaître l'indice de la<a>
élément à l'intérieur de son élément parent, et insérer le nouvel élément juste après que l'indice. par exemple.Vous ajoutez un élément avant l'élément choisi en utilisant simplement
index
, pas plus ou moins n'importe quoi.OriginalL'auteur bobince