Как импортировать html в python скрипт?

Здравствуйте
Написал простой парсер, который со страницы подтягивает информацию из таблички и записывает в файл html
Использовал Beautiful Soup

Вот он, файл html с данными, которые парсятся
<table class="content-table">
<tr>
<th>Год</th>
<th>Дивиденд (руб.)</th>
<th>Изм. к пред. году</th>
</tr>
<tr class="forecast">
<td class="black">след 12m. (прогноз)</td>
<td class="black11">83.71</td> <td class="color-positive">+53.2%</td> </tr>
<tr>
<td>2019</td>
<td>54.64</td> <td class="color-positive">+28.78%</td> </tr>
<tr>
<td>2018</td>
<td>42.43</td> <td class="color-negative">-16.13%</td> </tr>
<tr>
<td>2017</td>
<td>50.59</td> <td class="color-positive">+361.59%</td> </tr>
<tr>
<td>2016</td>
<td>10.96</td> <td class="color-positive">+3.59%</td> </tr>
<tr>
<td>2015</td>
<td>10.58</td> <td class="color-positive">+28.55%</td> </tr>
<tr>
<td>2014</td>
<td>8.23</td> <td class="color-negative">-4.3%</td> </tr>
<tr>
<td>2013</td>
<td>8.6</td> <td class="color-positive">+21.47%</td> </tr>
<tr>
<td>2012</td>
<td>7.08</td> <td class="color-positive">+41.04%</td> </tr>
<tr>
<td>2011</td>
<td>5.02</td> <td class="color-negative">-23.48%</td> </tr>
<tr>
<td>2010</td>
<td>6.56</td> <td class="color-positive">+48.42%</td> </tr>
<tr>
<td>2009</td>
<td>4.42</td> <td class="color-negative">-21.77%</td> </tr>
<tr>
<td>2008</td>
<td>5.65</td> <td class="color-positive">+22.83%</td> </tr>
<tr>
<td>2007</td>
<td>4.6</td> <td class="color-positive">+360%</td> </tr>
<tr>
<td>2006</td>
<td>1</td> <td>n/a</td> </tr>
<tr>
<td>2005</td>
<td>0</td> <td class="color-negative">-100%</td> </tr>
<tr>
<td>2004</td>
<td>2</td> <td>n/a</td> </tr>
</table>


Мне нужно эти данные записать в питоновский скрипт в виде "переменная" = "значение", где "Год" будет переменной year , значение - это размер дивиденда за этот год

Как это сделать?
  • Вопрос задан
  • 909 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
html_text = """
<table class="content-table">
...
</table>
"""

import lxml.html

root = lxml.html.fromstring(html_text)

header = [x.text for x in root.xpath('.//tr/th')]

for item in root.xpath('.//tr'):
    td = [x.text for x in item.xpath('.//td')]
    if td:
        print(dict(zip(header, td)))


{'Год': 'след 12m. (прогноз)', 'Дивиденд (руб.)': '83.71', 'Изм. к пред. году': '+53.2%'}
{'Год': '2019', 'Дивиденд (руб.)': '54.64', 'Изм. к пред. году': '+28.78%'}
{'Год': '2018', 'Дивиденд (руб.)': '42.43', 'Изм. к пред. году': '-16.13%'}
{'Год': '2017', 'Дивиденд (руб.)': '50.59', 'Изм. к пред. году': '+361.59%'}
{'Год': '2016', 'Дивиденд (руб.)': '10.96', 'Изм. к пред. году': '+3.59%'}
{'Год': '2015', 'Дивиденд (руб.)': '10.58', 'Изм. к пред. году': '+28.55%'}
{'Год': '2014', 'Дивиденд (руб.)': '8.23', 'Изм. к пред. году': '-4.3%'}
{'Год': '2013', 'Дивиденд (руб.)': '8.6', 'Изм. к пред. году': '+21.47%'}
{'Год': '2012', 'Дивиденд (руб.)': '7.08', 'Изм. к пред. году': '+41.04%'}
{'Год': '2011', 'Дивиденд (руб.)': '5.02', 'Изм. к пред. году': '-23.48%'}
{'Год': '2010', 'Дивиденд (руб.)': '6.56', 'Изм. к пред. году': '+48.42%'}
{'Год': '2009', 'Дивиденд (руб.)': '4.42', 'Изм. к пред. году': '-21.77%'}
{'Год': '2008', 'Дивиденд (руб.)': '5.65', 'Изм. к пред. году': '+22.83%'}
{'Год': '2007', 'Дивиденд (руб.)': '4.6', 'Изм. к пред. году': '+360%'}
{'Год': '2006', 'Дивиденд (руб.)': '1', 'Изм. к пред. году': 'n/a'}
{'Год': '2005', 'Дивиденд (руб.)': '0', 'Изм. к пред. году': '-100%'}
{'Год': '2004', 'Дивиденд (руб.)': '2', 'Изм. к пред. году': 'n/a'}


в переменные как копировать - уже сами догадаетесь...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы