Парсинг логотипов регионов Индонезии с Википедии
Table Of Content
- Изучаем парсинг веб-сайтов с помощью Python
- Список гербов округов и городов Индонезии — Википедия, свободная энциклопедия
- Вот список гербов округов и городов Индонезии. В Индонезии есть 416 округов и 98 городов...
- спарсить все ссылки на изображения с этой страницы https://id.wikipedia.org/wiki/Daftar_lambang_kabupaten_dan_kota_di_Indonesia
- и сохранить их в json-файле
- получить ссылки на изображения
- получить названия изображений
- сохранить в json-файле, где каждое название изображения является ключом, а ссылка на изображение - значением
- сохранить в json-файл
- вывести в консоль
- Как парсить статьи с Википедии с помощью Python
- В этой статье я создам парсер веб-страниц на Python, который будет парсить страницы Википедии. Парсер будет переходить на...
Изучаем парсинг веб-сайтов с помощью Python
Отказ от ответственности: Эта статья создана в образовательных целях.
Итак, проблема заключается в отсутствии доступных ресурсов для получения данных о всех регионах Индонезии вместе с их логотипами.
Если речь идет только о данных о регионах, то, вероятно, их много. Я сам использую проект от Laravolt здесь. Но так как пока нет данных о логотипах для каждого региона (округа и провинции), я попытался найти другие ресурсы, которые можно было бы добавить в базу данных.
И я нашел CDN от btekno.id, пример которого выглядит так: https://cdn.btekno.id/assets/logo/3172.png
Сначала я попробовал вручную скрапить каждый URL. Но этот способ очень неэффективен, так как нам придется делать множество запросов к этому CDN. Кроме того, расширение каждого логотипа может отличаться, например, png, jpg, jpeg или даже gif. И, кроме того, оказалось, что данные некорректны, перепутаны и не полны.
Поскольку требования проекта требуют наличия самого свежего и полного логотипа для каждого региона, единственным самым обновленным и полным источником логотипов является Википедия, приведенная ниже.
Список гербов округов и городов Индонезии — Википедия, свободная энциклопедия
Вот список гербов округов и городов Индонезии. В Индонезии есть 416 округов и 98 городов...
id.wikipedia.org
Таким образом, я решил собрать информацию с веб-сайта Википедии. Процесс довольно прост. Я просто следую руководству от freecodecamp и вношу некоторые изменения, чтобы адаптировать его к веб-сайту, который я хочу спарсить.
Вот код для сбора ссылок на изображения:
# спарсить все ссылки на изображения с этой страницы https://id.wikipedia.org/wiki/Daftar_lambang_kabupaten_dan_kota_di_Indonesia
# и сохранить их в json-файле
import requests
from bs4 import BeautifulSoup
import json
url = 'https://id.wikipedia.org/wiki/Daftar_lambang_kabupaten_dan_kota_di_Indonesia'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
# получить ссылки на изображения
image_links = []
for img in soup.find_all('img'):
image_links.append(img['src'])
# получить названия изображений
image_names = []
for img in soup.find_all('img'):
image_names.append(img['alt'])
# сохранить в json-файле, где каждое название изображения является ключом, а ссылка на изображение - значением
data = {}
for i in range(len(image_links)):
data[image_names[i]] = image_links[i]
# сохранить в json-файл
with open('image_links.json', 'w') as f:
json.dump(data, f)
# вывести в консоль
print(data)
После получения результатов парсинга с помощью этого кода, все еще требуется некоторая доработка. Поскольку этот код собирает все теги <img>
, находящиеся на странице, он также собирает логотип Википедии.
Чтобы запустить этот код, достаточно просто. Сначала установите необходимые библиотеки с помощью pip.
pip install requests
pip install beautifulsoup4
Затем просто запустите:
python3 {имяфайла}.py
Тогда результаты парсинга будут автоматически сохранены в файле image_links.json
.
Если у вас есть запрос на получение результата в виде базы данных после использования данных о районах от Laravolt, плюс ссылки на логотипы районов, которые я уже спарсил, пожалуйста, напишите в комментариях.
Вот и все.
Надеюсь, это будет полезно.
Ссылки: