Парсинг статей с сайта gov.uk на Python
Table Of Content
Оказывается, это довольно приятный сайт для работы
Для недавнего исследовательского проекта мне понадобилось собрать детали каждой статьи, опубликованной на сайте 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 если вы делаете что-то подобное.