2010-12-14 6 views
0

Dire que j'ai un fichier texte comme celui-ci:Comment obtenir des tags html?

<html><head>Headline<html><head>more words 
</script>even more words</script> 
<html><head>Headline<html><head>more words 
</script>even more words</script> 

Comment pourrais-je obtenir seulement les balises dans une liste comme ceci:

<html> 
<head> 
<html> 
<head> 
</script> 
</script> 
<html> 
<head> 
<html> 
<head> 
</script> 
</script> 
+0

Est-ce une continuation de [votre autre question] (http: // stackoverfl ow.com/questions/4435882/how-to-get-html-tags-from-url)? Si c'est le cas, vous devriez vraiment modifier votre autre question, plutôt que de re-poster – inspectorG4dget

Répondre

6

Je pense que c'est ce que vous voulez:

html_string = ''.join(input_file.readlines()) 
matches = re.findall('<.*?>', html_string) 
for m in matches: 
    print m 

Espérons que cela aide

+0

je pense que vous voulez dire: re.findall ('<.*?>', html_string) –

+0

@JackNull: Vous avez absolument raison. Les guillemets doubles supplémentaires sont une faute de frappe et ont été corrigés de façon rétroactive – inspectorG4dget

4

Python a un module HTMLParser pour ce.

Voici un code qui fait ce que vous voulez:

from HTMLParser import HTMLParser 

class MyHTMLParser(HTMLParser): 
    def handle_starttag(self, tag, attrs): 
     print "<%s>"%tag 

    def handle_endtag(self, tag): 
     print "</%s>"%tag 

parser = MyHTMLParser(); 
parser.feed("""<html><head>Headline<html><head>more words 
     </script>even more words</script> 
     <html><head>Headline<html><head>more words 
     </script>even more words</script> 
     """) 

Entrez votre chaîne dans parser.feed

Sortie:

$ python htmlparser.py 
<html> 
<head> 
<html> 
<head> 
</script> 
</script> 
<html> 
<head> 
<html> 
<head> 
</script> 
</script> 

Cette discussion sur le SO devrait aider: Using HTMLParser in Python efficiently

Questions connexes