CoderCastrov logo
CoderCastrov
Питон

Парсинг статей с сайта gov.uk на Python

Парсинг статей с сайта gov.uk на Python
просмотров
2 мин чтение
#Питон

Оказывается, это довольно приятный сайт для работы

Для недавнего исследовательского проекта мне понадобилось собрать детали каждой статьи, опубликованной на сайте gov.uk с 2015 года, в которой упоминается министр правительства.

На сайте gov.uk есть несколько функций, которые сделали это задание приятным.

Во-первых, страницы, подобные этой на сайте gov.uk, имеют очень последовательный дизайн, что всегда упрощает парсинг веб-страниц.

Во-вторых, министры и организации, к которым относится статья, помечены в метаданных вверху каждой статьи. (Например, Майкл Гоув, Надин Доррис, Министерство по вопросам выравнивания, жилища и сообществ, и Министерство цифровой экономики, культуры, медиа и спорта в приведенном выше примере).

И, наконец, страница поиска статей использует эти метки для возможности поиска по министру.

Поиск конкретного министра

Я собирал статьи с помощью Python, с использованием двух основных функций.

Первая функция scrape_news_and_communications_page() показана ниже.

Она принимает четыре параметра:

  • govuk_string Это версия имен министров, используемая в URL-адресах gov.uk. Например, Майкл Гоув - michael-gove; у других министров иногда есть менее очевидные представления их имени в URL-адресах. В качестве предварительного шага я собрал эти строки gov.uk для всех, кто был министром с 2015 года, используя отличный пакет нечеткого сопоставления SeatGeek TheFuzz для сопоставления списка строк имен gov.uk с базой данных министров, которую мы (Институт правительства) имеем.
  • Номер страницы, который итерируется.
  • Начальная дата интересующих нас статей.
  • Конечная дата интересующих нас статей.

Вторая функция scrape_article_page() получает несколько вещей из метаданных страницы статьи: тип статьи (например, речь, пресс-релиз, переписка, новость), заголовок, помеченные организации и помеченные люди. В случае речей она берет дату произнесения речи, а не дату публикации речи на сайте gov.uk, и обрезает пояснительные примечания (например, Транскрипт речи, точно такой, как он был произнесен). Это показано ниже:

Мне не был интересен контент статей, поэтому я не собирал его, хотя парсер легко может быть расширен для этого.

Мы использовали данные в опубликованном в прошлом месяце выводе, сфокусированном на количестве речей, произнесенных разными министрами, но планируем провести дальнейший анализ данных в ближайшем времени.

Весь скрипт можно найти ниже. Он считывает входной список строк gov.uk из базы данных SQL и сохраняет собранные данные в базу данных.

Оставьте комментарий или напишите мне в Twitter если вы делаете что-то подобное.