Мне нужно проанализировать веб-страницу и извлечь из нее некоторые значения. Поэтому я создал парсер Python следующим образом:
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_data(self, data):
print "Data :", data
f=open("result.html","r")
s=f.read()
parser = MyHTMLParser()
parser.feed(s)
Программа читает файл html и печатает данные из него.
Я передал следующий result.html, здесь парсер работает нормально
<tr class='trmenu1'>
<td>Marks Obtained: </td><td colspan=1>75.67 Out of 100</td>
</tr>
<tr class='trmenu1'>
<td>GATE Score: </td><td colspan=1>911</td>
</tr>
<tr class='trmenu1'>
<td>All India Rank: </td><td colspan=1>34</td>
</tr>
После прохождения вышеупомянутого html выдается:
Данные:
Данные: Оценки получены:
Данные: 75,67 из 100 Данные:
Данные:
Данные:
Данные: GATE Счет:
Данные: 911
Данные:
Данные:
Данные:
Данные: Вся Индия Ранг:
Данные: 34
Но синтаксический анализатор должен читать файл большего размера, а код, упомянутый выше, является небольшой частью этого большого файла. Файл слишком большой, чтобы вставить его сюда. Поэтому я загрузил его по следующей ссылке: http://www.mediafire.com/?dsgr1gdjvs59c7c
Когда передается больший файл, парсер не читает все записи, оставляя некоторые пустые записи в выводе.
Часть вывода показана ниже:
Данные: Силлаби
Данные:
Данные: GATE Score
Данные:
Данные: результаты GATE
Данные:
Обратите внимание на пустую запись в строке под счетом ворот, которая была 911 в предыдущем выводе.
Парсер работает нормально с маленьким файлом, но не с большим файлом
Почему это происходит? Я использую Python 2.7