Удалить метки из красивого супа - PullRequest
0 голосов
/ 30 мая 2018

Я новичок в веб-обработке и пытаюсь выяснить, как удалить нежелательные теги.

Я хочу получить объявления и соответствующие даты относительно денежно-кредитной политики с сайта Банка Канады.Мой код выглядит следующим образом: -

from bs4 import BeautifulSoup
import urllib
r=urllib.request.urlopen('https://www.bankofcanada.ca/content_type/publications/mpr/?post_type%5B0%5D=post&post_type%5B1%5D=page').read()
soup = BeautifulSoup(r)

soup.prettify()
letters = soup.find_all("div", class_="media-body")
lobbying = {}
for element in letters:
    lobbying[element.a.get_text()] = {}
print(lobbying)

Вывод прилагается на скриншоте. введите описание изображения здесь

Ожидаемый результат: -

12 апреля 2017: Ожидается, что экономика Канады вырастет на 2,5% в этом году и чуть ниже 2процентов в 2018 и 2019 годах

13 апреля 2016 года: прогнозируется, что экономика Канады вырастет на 1,7 процента в 2016 году и вернется к потенциальному уровню в следующем году, поскольку сложные корректировки продолжатся

Заранее спасибо

1 Ответ

0 голосов
/ 30 мая 2018

Вам нужны теги media-date и media-excerpt внутри каждого media div и просто удалите пробелы:

from bs4 import BeautifulSoup
import urllib.request

r = urllib.request.urlopen(
    'https://www.bankofcanada.ca/content_type/publications/mpr/?post_type%5B0%5D=post&post_type%5B1%5D=page').read()
soup = BeautifulSoup(r, "lxml")

lobbying = {}

# All media/div elements.
for element in soup.select(".media"):
    # select_one pulls 1 match, pull the text from each tag.
    lobbying[element.select_one(".media-date").text] = element.select_one(".media-excerpt").text.strip()
print(lobbying)

, что даст вам:

   {
    'April 18, 2018': 'The Bank’s new forecast calls for economic growth of 2.0 percent this year, 2.1 per cent in 2019 and 1.8 per cent in 2020.',
    'January 17, 2018': 'Growth in the Canadian economy is projected to slow from 3 per cent in 2017 to 2.2 per cent this year and 1.6 per cent in 2019.',
    'October 25, 2017': 'Projections for Canadian economic growth have been increased to 3.1 per cent this year and 2.1 per cent in 2018, with growth of 1.5 per cent forecast for 2019.',
    'July 12, 2017': 'Growth in the Canadian economy is projected to reach 2.8 per cent this year before slowing to 2.0 per cent next year and 1.6 per cent in 2019.',
    'April 12, 2017': 'Canada’s economy is expected to grow by 2 1/2 per cent this year and just below 2 per cent in 2018 and 2019.',
    'January 18, 2017': 'The Canadian economy is expected to expand by 2.1 per cent this year and in 2018.',
    'October 19, 2016': 'Growth in the Canadian economy is expected to increase from 1.1 per cent this year to about 2.0 per cent in 2017 and 2018.',
    'July 13, 2016': 'Canadian economic growth is projected to accelerate from 1.3 per cent this year to 2.2 per cent in 2017.',
    'April 13, 2016': 'Canada’s economy is projected to grow by 1.7 per cent in 2016 and return to potential next year as complex adjustments continue.',
    'January 20, 2016': 'Growth in Canada’s economy is expected to reach 1.4 per cent this year and accelerate to 2.4 per cent in 2017.'}

Вы также можете просто использовать понимание диктата для создания диктата:

lobbying = {el.select_one(".media-date").text: el.select_one(".media-excerpt").text.strip()
            for el in soup.select(".media")}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...