2010-12-14 6 views
0

Скажем, у меня есть текстовый файл, как это:Как получить 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> 

Как бы я получить только теги в список, как это:

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

Является ли это продолжением [вашего другого вопроса] (http: // stackoverfl ow.com/questions/4435882/how-to-get-html-tags-from-url)? Если это так, вы должны действительно отредактировать свой другой вопрос, а не повторять сообщение – inspectorG4dget

ответ

6

Я думаю, что это то, что вы хотите:

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

Надеюсь, что это поможет

+0

Я думаю, что вы имеете в виду: re.findall ('<.*?>', html_string) –

+0

@JackNull: Вы абсолютно правы. Дополнительные двойные кавычки являются опечатками и были ретроактивно фиксированными – inspectorG4dget

4

Python имеет модуль HTMLParser для это.

Вот код, который делает то, что вы хотите:

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> 
     """) 

Введите вашу строку в parser.feed

Выход:

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

Это обсуждение SO должно помочь: Using HTMLParser in Python efficiently

Смежные вопросы