2012-01-09 4 views
0

Я не знаю много о html ... Как удалить только текст со страницы? Например, если страница HTML гласит:Обработка HTML-файлов Python

<meta name="title" content="How can I make money at home online? No gimmacks please? - Yahoo! Answers"> 
<title>How can I make money at home online? No gimmicks please? - Yahoo! Answers</title> 

Я просто хочу, чтобы извлечь это.

How can I make money at home online? No gimmicks please? - Yahoo! Answers 

Я использую функцию Re:

def striphtml(data): 
    p = re.compile(r'<.*?>') 
    return p.sub(' ',data) 

, но до сих пор это не делать то, что я намерен это сделать ..?

выше функция называется:

for lines in filehandle.readlines(): 

     #k = str(section[6].strip()) 
     myFile.write(lines) 

     lines = striphtml(lines) 
     content.append(lines) 
+1

возможно дубликат [HTML в анализом Python] (http://stackoverflow.com/questions/717541/parsing-html-in- python), [Обработка файла HTML с использованием Python] (http://stackoverflow.com/q/7694637) – Sathya

+1

Проверьте этот вопрос: http://stackoverflow.com/questions/328356/extracting-text-from-html-file -Использование-питон – mgibsonbr

ответ

2

Не использовать регулярные выражения для HTML/XML разбора. Вместо этого попробуйте http://www.crummy.com/software/BeautifulSoup/.

from BeautifulSoup import BeautifulSoup 
soup = BeautifulSoup('Your resource<title>hi</title>') 
soup.title.string # Your title string. 
1

Обычно я использую http://lxml.de/ для разбора html! он очень прост в использовании, и в значительной степени для получения тегов вы можете использовать xpath для него! которые просто делают вещи легкими и быстрыми.

У меня есть пример использования в скрипте, который я сделал, чтобы прочитать фид XML и сосчитать слова:

https://gist.github.com/1425228

Также вы можете найти больше примеров в документации: http://lxml.de/lxmlhtml.html

2

Используйте для этого синтаксический анализатор html. Можно было бы BeautifulSoup

Чтобы получить текстовое содержание страницы:

from BeautifulSoup import BeautifulSoup 


soup = BeautifulSoup(your_html) 
text_nodes = soup.findAll(text = True) 
retult = ' '.join(text_nodes) 
Смежные вопросы