Я ищу, чтобы очистить данные из таблицы HTML, используя только стандартный Python HTML Parser. Мне нужно придерживаться фондовых инструментов, так как код будет широко распространен, и я не могу взять время, чтобы поддержать тех, кто нуждается в установке BeautifulSoup, lxlml и т.д.Scrape HTML-таблица со стандартным Python HTMLParser
Например, в HTML-код:
<table id="indexlist">
<tbody>
<tr class="indexhead">
<th class="indexcolicon">
<img src="/icons/blank.gif" alt="[ICO]">
</th>
<th class="indexcolname">
<a href="?C=N;O=D">Name
</a>
</th>
<th class="indexcollastmod">
<a href="?C=M;O=A">Last modified
</a>
</th>
<th class="indexcolsize">
<a href="?C=S;O=A">Size
</a>
</th>
</tr>
<tr class="parent">
<td class="indexcolicon">
<a href="/pub/DATASETS/nsidc0081_nrt_nasateam_seaice/browse/">
<img src="/icons/back.gif" alt="[PARENTDIR]">
</a>
</td>
<td class="indexcolname">
<a href="/pub/DATASETS/nsidc0081_nrt_nasateam_seaice/browse/">Parent Directory
</a>
</td>
<td class="indexcollastmod">
</td>
<td class="indexcolsize"> -
</td>
</tr>
<tr class="odd">
<td class="indexcolicon">
<a href="nt_20150101_f17_nrt_n.png">
<img src="/icons/image2.gif" alt="[IMG]">
</a>
</td>
<td class="indexcolname">
<a href="nt_20150101_f17_nrt_n.png">
nt_20150101_f17_nrt_n.png
</a>
</td>
<td class="indexcollastmod">
2015-03-10 11:25
</td>
<td class="indexcolsize"> 56K
</td>
</tr>
<tr class="even">
<td class="indexcolicon">
<a href="nt_20150102_f17_nrt_n.png">
<img src="/icons/image2.gif" alt="[IMG]">
</a>
</td>
<td class="indexcolname">
<a href="nt_20150102_f17_nrt_n.png">
nt_20150102_f17_nrt_n.png
</a>
</td>
.
.
.
Я хочу, чтобы иметь возможность извлекать «данные» в этой таблице. Более конкретно, данные будут все значения атрибутов, заканчивающиеся на * .png. Они имеют то же имя, что и данные внутри таблицы. Я не хочу явно заявлять, что хочу очистить файлы * .png, потому что я хотел бы использовать этот код в разных каталогах, которые будут иметь разные форматы файлов. Я пробовал код, который пытается извлечь значение всех атрибутов с именем «href», но это также возвращает множество других атрибутов в теле HTML. Очистка только данных также возвращает некоторые экземпляры, которые выходят за пределы таблицы. Например:
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.inLink = False
self.dataArray = []
def handle_starttag(self, tag, attrs):
self.inLink = False
if tag == 'a':
for name, value in attrs:
if name == 'href':
self.inLink = True
self.lasttag = tag
def handle_data(self, data):
if self.lasttag == 'a' and self.inLink and data.strip():
self.dataArray.append(data)
Однако это возвращает:
nt_20170119_f18_nrt_n.png
nt_20170120_f18_nrt_n.png
nt_20170121_f18_nrt_n.png
nt_20170122_f18_nrt_n.png
Home
|
Contact Us
, поскольку есть также несколько «а» метки, которые живут за пределами HTML-таблицы. У кого-нибудь есть метод для извлечения данных или значений href из таблицы с использованием стандартных методов разбора HTML?
Обдумал это. Необходимо создать счетчик в синтаксическом анализаторе для регистрации, когда парсер кормится информацией из таблицы HTTP. Также обрабатываются исключения (например, каталоги и другие нежелательные hrefs) с операторами if. – GDeezy