Этот пост будет очень коротким введением в HTML Parsing с Booksoup.
В настоящее время я в настоящее время в процессе внедрения бота чата для подергивания в Python, который слушает различные команды. После некоторого мышления я решил заставить его ответить с цитатами Schwarzenegger, потому что … почему бы не?
Сама реализация не будет проблемой, поскольку я сделал подобные вещи раньше с ботом. Большой вопрос был, куда получить цитаты. Раньше мне повезло получить все свои цитаты от API, которые заставляют его смех легко использовать их с ботом.
Поиск Schwarzenegger Quote Consific Apis не имеет никаких фруктов. Ну, чтобы быть точным, я нашел репозиторий на Github, если кто-то реализовал API с цитатами Schwarzenegger, но казалось не в сети.
Счастливчик за меня, он содержал список цитат и фильмы, которые они были. У него только один маленький недостаток … Это выглядело так:
"\"It's showtime!\"-- The Running Man (1987)", "\"Alright everyone, chill.\"-- Batman & Robin (1997)", "\"Allow me to break the ice.\"-- Batman & Robin (1997)", "\"I need your clothes, your boots, and your motorcycle.\"-- Terminator 2: Judgment Day (1991)"
Будучи как незнакомый с HTML, как я был (и все еще), я был немного поражен. Возможно, эта проблема может быть решена с некоторыми поиском и заменить, но я решил для другого, более информативного подхода.
Потому что в моем отчаянии я вспомнил подобную проблему на работе, которую мой коллега решается в Python с использованием пакета Beautifulsoup Отказ
Установка была так же просто, как вы используете пакеты Python.
pip install BeautifulSoup4
Следующие шаги были так же просто
from bs4 import BeautifulSoup example = "\"It's showtime!\"-- The Running Man (1987)" soup = BeautifulSoup(example, "html.parser")
Вы можете не заметить его, но мы почти сделаем, потому что следующая команда создает выход, который очень близко к тому, что мы ищем:
>>>soup.get_text() '"It\'s showtime!"-- The Running Man (1987)'
Чтобы найти отдельных тегов можно просто использовать:
>>>soup.find("div", class_="quote").text '"It\'s showtime!"' >>>soup.find("div", class_="movie-title").text '-- The Running Man (1987)'
Если мы хотели список всех тегов, то следующее было бы установочным решением:
>>>soup.currentTag() ["It's showtime!",-- The Running Man (1987)]
Мое окончательное решение – в том числе некоторые убирать – выглядело так:
quotes = [] for entry in unparsed_quotes: soup = BeautifulSoup(entry.replace("
", "\n"), "html.parser") quotes.append(soup.find("div", class_="quote").text + "\nfrom: " + soup.find("div", class_="movie-title").text.replace("-- ", ""))
Даже после этого я понял, какой мощный инструмент Beautifulsoup Есть и я даже не поцарапал поверхность. Это было недолго, пока мне не нужен эти функции следующего уровня. Но это для другой статьи.
На данный момент единственное, что еще предстоит сказать, это:
>>>soup = BeautifulSoup(example, "html.parser") >>>soup.text '"I\'ll be back."-- Terminator 2: Judgment Day (1991)'
Оригинал: “https://dev.to/topjer/schwarzenegger-quotes-with-beautifulsoup-4kde”