2010-04-04 4 views
1

Какие модули лучше всего написать питонную программу, которая просматривает сотни html-документов и удаляет определенную строку html, которая предоставляется. Например, если у меня есть html-документ, который имеет <a href="test.html">Test</a>, и я хочу удалить его из каждой страницы html, которая имеет его.Поиск определенной строки HTML с использованием Python

Любая помощь очень ценится, и мне не нужен кто-то, чтобы написать программу для меня, просто полезный момент в правильном направлении.

+1

Я бы подумал, что 'sed' или что-то еще уже реализованное будет проще. – Amber

ответ

0

htmllib

Этот модуль определяет класс, который может служить в качестве основы для разбора текстовых файлов отформатированные в язык разметки гипертекста (HTML). Класс не имеет непосредственного отношения к I/O - он должен быть снабжен вводом в форме строки методом и вызывает вызовы методам объекта «formatter» для получения вывода. Класс HTMLParser предназначен для использования в качестве базового класса для других классов, чтобы добавить функциональность , и позволяет увеличить большинство его методов или переопределить . В свою очередь, этот класс является производным от и расширяет класс SGMLParser , определенный в модуле sgmllib. реализация HTMLparser поддерживает HTML 2.0 язык, как описано в RFC 1866.

5

Если строка, которую вы ищете будет в HTML буквально, то простая замена строка будет хорошо:

old_html = open(html_file).read() 
new_html = old_html.replace(my_string, "") 
if new_html != old_html: 
    open(html_file, "w").write(new_html) 

В качестве примера строки, не являющейся буквально в HTML, предположим, что вы ищете «Тест», как вы сказали. Вы хотите, чтобы соответствовать эти фрагменты HTML ?:

<a href='test.html'>Test</a> 
<A HREF='test.html'>Test</A> 
<a href="test.html" class="external">Test</a> 
<a href="test.html">Tes&#116;</a> 

и так далее: «тот же» HTML могут быть выражены по-разному. Если вы знаете точные символы, используемые в HTML, то простая замена строк прекрасна. Если вам нужно сопоставить на семантическом уровне HTML, вам нужно будет использовать более сложные инструменты, такие как BeautifulSoup, но тогда у вас также будет потенциально очень отличный HTML-вывод, чем вы начали, даже в разделах, не затронутых удалением , потому что весь файл будет проанализирован и восстановлен.

Чтобы выполнить код по многим файлам, вы найдете os.path.walk, полезный для поиска файлов в дереве, или glob.glob для сопоставления имен файлов с шаблонами шаблонов оболочки.

+0

Что решает замену строки, но как насчет того, чтобы запускать один и тот же скрипт для сотен html-страниц? – Gabe

+0

Добавил os.path.walk и glob.glob в ответ ... –

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