2015-10-19 2 views
1

J'ai un fichier XHTML qui est structuré comme suit:Comment supprimer une déclaration XML à l'aide BeautifulSoup4

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
... 
</head> 
<body> 
... 
</body> 
<html> 

J'utilise BeautifulSoup et je veux supprimer la déclaration XML du document, donc ce que je ressemble à ceci:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
... 
</head> 
<body> 
... 
</body> 
<html> 

Je ne trouve pas un moyen d'obtenir la déclaration XML pour l'enlever. Il ne semble pas être un Doctype, une déclaration, une balise, ou NavigableString autant que je peux dire. Est-ce que je peux trouver ceci pour l'extraire?

Comme un exemple de travail, je peux retirer le Doctype avec le code comme celui-ci (en supposant que le texte du document est la variable "html"):

soup = BeautifulSoup(html) 
[item.extract() for item in soup.contents if isinstance(item, Doctype)] 

Répondre

1

Vous pouvez utiliser l'approche suivante:

import bs4 
from bs4 import BeautifulSoup 
soup = BeautifulSoup(html, 'html.parser') 

for e in soup: 
    if isinstance(e, bs4.element.ProcessingInstruction): 
     e.extract() 
     break 
+0

Parfait, merci. :) –