Красивый суп Python Получение содержимого html внутри и идентификатора элемента - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь почистить HTML-страницу

 productsoup = BeautifulSoup(productdriver.page_source,"lxml");

Этот скрипт на python предоставляет HTML-код, содержащий раздел id элемента ниже

<div style="padding-top: 10px;" id="government_funding">
    <h2>Sampling of Recent Funding Actions/Set Asides</h2>
    <p style="font-style: italic; font-size: .8em;">In order by amount of set aside monies.</p>
    <ul>
        <li><span style="color: green;">$14,450</span> - Thursday the 17th of August 2017<br><span style="font-weight: bold; font-size: 1.2em;">National Institutes Of Health</span> <br> NATIONAL INSTITUTES OF HEALTH NICHD<br>AVANTI POLAR LIPIDS:1109394 [17-010744]
            <hr>
        </li>
        <li><span style="color: green;">$5,455</span> - Thursday the 31st of August 2017<br><span style="font-weight: bold; font-size: 1.2em;">National Institutes Of Health</span> <br> NATIONAL INSTITUTES OF HEALTH NICHD<br>AVANTI POLAR LIPIDS:1109394 [17-004567]
            <hr>
        </li>
        <li><span style="color: green;">$5,005</span> - Tuesday the 8th of August 2017<br><span style="font-weight: bold; font-size: 1.2em;">National Institutes Of Health</span> <br> NATIONAL INSTITUTES OF HEALTH NIAID<br>CUSTOM LIPID SYNTHESIS (24:0-10:0 PE) 100 MG PACKAGED IN 10-10MG VIALS POWDER PER QUOTE #DQ-000665
            <hr>
        </li>
        <li><span style="color: green;">$5,005</span> - Thursday the 17th of August 2017<br><span style="font-weight: bold; font-size: 1.2em;">National Institutes Of Health</span> <br> NATIONAL INSTITUTES OF HEALTH NIAID<br>CUSTOM LIPID SYNTHESIS (24:0-10:0 PE) 100 MG PACKAGED IN 10-10MG VIALS POWDER PER QUOTE #DQ-000665
            <hr>
        </li>
    </ul>
</div>

это просто раздел HTML, этот раздел идентифицируется id = "Government_funding".для каждого из li в id = "goverment_funding" цена печати, дата, агентство.Таким образом, выходной для одной ли будет

цена = $ 14 450

Дата = 17 августа 2017

Агентство = Национальные институты здравоохранения

SubAgency =НАЦИОНАЛЬНЫЕ ИНСТИТУТЫ ЗДОРОВЬЯ NICHD

Как я могу закодировать вышеприведенный вывод?

ссылка на источник данных - это https://www.collierreporting.com/company/avanti-polar-lipids-inc-alabaster-al

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете перебрать теги li и последующие значения span и использовать re.findall для доступа к данным:

import re
def all_data(d):
  a, b = [i.text for i in d.find_all('span')]
  return [a, *re.findall('\w+\sthe\s\w+\sof\s\w+\s\d+', d.text), b]

results = [all_data(b) for b in productsoup.find('div', {'id':'government_funding'}).find_all('li')]

Вывод:

[['$14,450', 'Thursday the 17th of August 2017', 'National Institutes Of Health'], ['$5,455', 'Thursday the 31st of August 2017', 'National Institutes Of Health'], ['$5,005', 'Tuesday the 8th of August 2017', 'National Institutes Of Health'], ['$5,005', 'Thursday the 17th of August 2017', 'National Institutes Of Health']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...