Разбор только 2 определенных столбцов HTML-таблицы в словарь для последующего использования - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь parse только 2 столбца HTML-таблицы, которые я получил с веб-сайта с модулем requests.Что я мог сделать, так это отсортировать все столбцы в строку в файле, чтобы их было легко прочитать, но мне действительно нужно это в dictionary, чтобы потом я мог сравнить Clan Days для имени пользователя SirFulgeruL, напримерс integer Вот мой код:

from html_table_extractor.extractor import Extractor

table_doc = """
<table class="table table-bordered">
<tbody>
<tr>
<th><i class="fa fa-sort-numeric-desc"></i> Rank</th>
<th><i class="fa fa-address-card"></i> Name</th>
<th><i class="fa fa-usd"></i> Deposited money</th>
<th><i class="fa fa-clock-o"></i> Clan Days</th>
<th>Time last 7 days</th>
<th><i class="fa fa-gear"></i> Options</th> </tr>
<tr>
<td>7</td>
<td><i class="fa fa-circle text-red" data-toggle="tooltip" data-original-title="offline"></i> <a href="https://jadepanel.nephrite.ro/profile/SirFulgeruL2k19">SirFulgeruL2k19</a></td>
<td><font style="color:green">$417,090</font></td>
<td>140</td>
<td>11:57</td>
<td></td>
</tr>
<tr>
<td>6</td>
<td><i class="fa fa-circle text-red" data-toggle="tooltip" data-original-title="offline"></i> <a href="https://jadepanel.nephrite.ro/profile/Darius">Darius</a></td>
<td><font style="color:green">$2,717,020</font></td>
<td>127</td>
<td>09:42</td>
<td><a onclick="remove_clan(3080)">uninvite</a></td>
</tr>
""""

extractor = Extractor(table_doc).parse()
extractor.write_to_csv(path='.')

Позднее редактирование:

Через некоторое время я смог разобрать только дни из таблицы, по некоторым причинам я могу 'разбирать имена.

from lxml import etree
parser = etree.HTMLParser()
tree = etree.fromstring(table_doc, parser)
days = tree.xpath('//tr/td[position()=4]')

print ('Column 2\n========')
for r in days:
    print (r.text)

1 Ответ

0 голосов
/ 12 декабря 2018

Хорошо, вы можете использовать html_table_extractor для извлечения табличных данных из html в файл csv с именем output.csv.

Следующая операция - проанализировать этот файл с помощью стандартной библиотеки csv module:

...
import csv
with open('output.csv') as fd:
    rd = csv.DictReader(fd, skipinitialspace=True)
    for row in rd:
        print({ k: row[k] for k in row if k in ['Name', 'Clan Days']})

Будет выведено:

{'Name': 'SirFulgeruL2k19', 'Clan Days': '140'}
{'Name': 'Darius', 'Clan Days': '127'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...