Очистка веб-страниц стала намного более автоматизированной
В последние несколько лет очистка веб-страниц была одной из моих повседневных и часто необходимых задач. Мне было интересно, смогу ли я сделать его умным и автоматическим, чтобы сэкономить много времени. Итак, я сделал AutoScraper!
Код проекта доступен здесь. Он стал самым популярным проектом на Github.
Этот проект предназначен для автоматического парсинга веб-страниц, чтобы упростить парсинг. Он получает URL-адрес или HTML-содержимое веб-страницы и список образцов данных, которые мы хотим очистить с этой страницы. Эти данные могут быть текстом, URL-адресом или любым значением HTML-тега этой страницы. Он изучает правила очистки и возвращает похожие элементы. Затем вы можете использовать этот изученный объект с новыми URL-адресами, чтобы получить аналогичный контент или точно такой же элемент этих новых страниц.
Установка
Он совместим с Python 3.
Установите последнюю версию из репозитория git с помощью pip:
$ pip install git+https://github.com/alirezamika/autoscraper.git
Как использовать
Получение аналогичных результатов
Скажем, мы хотим получить все связанные заголовки сообщений на странице StackOverflow:
Вот результат:
Теперь вы можете использовать объект scraper
для получения связанных тем любой страницы StackOverflow:
scraper.get_result_similar('https://stackoverflow.com/questions/606191/convert-bytes-to-a-string')
Получение точных результатов
Допустим, мы хотим получить данные о ценах на акции в Yahoo Finance:
from autoscraper import AutoScraper url = 'https://finance.yahoo.com/quote/AAPL/' wanted_list = ["124.81"] scraper = AutoScraper() # Here we can also pass html content via the html parameter instead of the url (html=html_content) result = scraper.build(url, wanted_list) print(result)
Вы также можете передать любой пользовательский параметр модуля requests
. Например, вы можете использовать прокси или настраиваемые заголовки:
proxies = { "http": 'http://127.0.0.1:8001', "https": 'https://127.0.0.1:8001', } result = scraper.build(url, wanted_list, request_args=dict(proxies=proxies))
Теперь мы можем получить цену любого символа:
scraper.get_result_exact('https://finance.yahoo.com/quote/MSFT/')
Возможно, вы захотите получить и другую информацию. Например, если вы хотите получить и рыночную капитализацию, вы можете просто добавить ее в список розыска. Используя метод get_result_exact
, он будет извлекать данные в том же точном порядке в списке розыска.
Другой пример. Допустим, мы хотим очистить текст, количество звездочек и ссылку для запросов на вытягивание страниц репозитория Github:
url = 'https://github.com/alirezamika/autoscraper' wanted_list = ['A Smart, Automatic, Fast and Lightweight Web Scraper for Python', '662', 'https://github.com/alirezamika/autoscraper/issues'] scraper.build(url, wanted_list)
Все просто, правда?
Сохранение модели
Теперь мы можем сохранить построенную модель, чтобы использовать ее позже. Сохранить:
# Give it a file path scraper.save('yahoo-finance')
И загрузить:
scraper.load('yahoo-finance')
Генерация кода python парсера
Мы также можем сгенерировать автономный код для изученного парсера, чтобы использовать его где угодно:
code = scraper.generate_python_code() print(code)
Он напечатает сгенерированный код. Существует класс с именем GeneratedAutoScraper
, в котором есть методы get_result_similar
и get_result_exact
, которые вы можете использовать. Вы также можете использовать метод get_result
, чтобы получить и то, и другое.
См. этот Суть для более продвинутого использования.
Чтобы продемонстрировать возможности AutoScraper, я написал руководство по созданию API с любого веб-сайта менее чем за 5 минут и менее чем за 20 строк кода. Вы можете прочитать это здесь".
Спасибо.
Надеюсь, этот проект будет полезен для вас и сэкономит ваше время. Если у вас есть какие-либо вопросы, просто задавайте их ниже, и я отвечу на них. Жду ваших отзывов и предложений.