Проблема извлечения текста из HTML-файла с помощью регулярных выражений Python - PullRequest
0 голосов
/ 31 июля 2010

Я работаю над проектом, который требует от меня написания кода для извлечения текста из файла HTML в Python.

#! /usr/bin/python
import os
import re    

if __name__ == '__main__':
    f = open('./results/sample_result.html')
    soup = f.read()
    p = re.compile("binary")
    for line in soup:
        m = p.search(line)
        if m:
            print "finally"
            break

^ Пример кода, который я написал, чтобы проверить, могу ли я извлечь данные.Я написал несколько программ, похожих на эту, для извлечения текста из текстовых файлов почти одинаково, и они работали просто отлично.Есть что-то, что я упускаю в отношении регулярных выражений и HTML?

Ответы [ 3 ]

4 голосов
/ 31 июля 2010

Есть что-то, что я упускаю в отношении регулярных выражений и HTML?

Да.Вы упускаете тот факт, что некоторые HTML не могут быть проанализированы с помощью простого регулярного выражения.

0 голосов
/ 31 июля 2010

Это на самом деле то, что вы пытаетесь сделать, или просто простой пример для более сложного регулярного выражения позже?Если последнее, слушай всех остальных.Если первое:

for line in file:
      if "binary" in line:
            # do stuff

Если это не сработает, вы уверены, что "binary" находится в файле?Нет, я не знаю, "<i>b</i>inary"?

0 голосов
/ 31 июля 2010

HTML, как его понимают браузеры, слишком гибок для выражений reg.Атрибуты могут появляться в любом теге и в любом порядке, а также в верхнем или нижнем регистре, с кавычками или без кавычек о значении.Специальные акценты могут отображаться где угодно.Пробелы важны в регулярном выражении, но не так много в HTML, поэтому ваше регулярное выражение должно быть усеяно \s* везде.Не требуется, чтобы открывающие теги соответствовали закрывающим тегам.Некоторые открывающие теги содержат завершающий символ «/», что означает, что они являются пустыми тегами (без тела, без закрывающего тега).Наконец, HTML часто является вложенным, что в плане регулярных выражений в значительной степени не соответствует действительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...