Pour l'utilisation de base de Beautiful Soup, veuillez consulter Scraping with Python and Beautiful Soup.
Cette fois, j'ai eu l'occasion de gérer Beautiful Soup avec HTML, donc les astuces, mémos et mémorandums du traitement utilisés à l'époque, eh bien, ce genre de chose. Mettre à jour de temps en temps (peut-être)
for texttag in content.find_all('text'):
texttag.name = 'p'
Remplacement de tout « »
Trouvez le Alternativement, le même processus peut être effectué par la méthode suivante. Trouvez le Tout d'abord, le premier processus trouve Ajouter des balises aux éléments qui ne sont pas encadrés par une balise spécifique
for imgtag in content.find_all('img'):
if not imgtag.parent.name in ['figure']:
imgtag.wrap(content.new_tag('figure'))
<img>
qui n'est pas inclus dans le <figure>
et placez-le dans le <figure>
for notwrap_a in content.select("p ~ a"):
notwrap_a.wrap(content.new_tag("p"))
<a>
qui n'est pas inclus dans <p>
et placez-le dans <p>
### Supprimer tout sauf le premier élément de la liste
for tag in content.find_all('ul'):
tag.find('li').unwrap()
for unwarp_ul in content.find_all('ul'):
unwarp_ul.unwrap()
for delete_li in content.find_all('li'):
delete_li.decompose()
<ul>
et supprime <li>
du premier élément de la liste avec find ('li'). Unwrap
.
Ensuite, j'ai supprimé le «» et supprimé le dernier «
<li>
est supprimé, donc si vous souhaitez ajouter une nouvelle balise,
tag.find('li').unwrap()
À
first_li = tag.find('li')
first_li.name = 'p'
Je pense que ce serait bien de faire quelque chose comme ça
for p in soup.find_all('p'):
p.parent.unwrap()
J'ai supprimé l'élément parent de <p>
Supposons que vous ayez le code HTML suivant
<img src="00001.jp">
<figcaption>caption string1</figcaption>
<img src="00002.jp">
<img src="00003.jp">
<figcaption>caption string3</figcaption>
S'il y a un <figcaption>
à côté de <img>
et que vous voulez l'enfermer dans un <figure>
, vous pouvez faire comme suit.
html = "<img src="00001.jp">
<figcaption>caption string1</figcaption>
<img src="00002.jp">
<img src="00003.jp">
<figcaption>caption string3</figcaption>"
content = BeautifulSoup(html)
for img_tag in content.find_all('img'):
fig = content.new_tag('figure')
img_tag.wrap(fig)
next_node = img_tag.find_next()
if next_node and next_node.name == 'figcaption':
fig.append(next_node)
print(content)
Si vous faites cela, il sera édité comme suit
<figure>
<img src="00001.jp"/>
<figcaption>caption string1</figcaption>
</figure>
<figure><img src="00002.jp"/></figure>
<figure>
<img src="00003.jp"/>
<figcaption>caption string3</figcaption>
</figure>
Recommended Posts