AutoScraper: умный, автоматический, быстрый и легкий веб-скрпапер на Python
Этот проект предназначен для автоматического парсинга веб-страниц, чтобы упростить парсинг. Он получает URL-адрес или HTML-содержимое веб-страницы и список образцов данных, которые мы хотим собрать с этой страницы. Эти данные могут быть текстом, URL-адресом или любым значением тега html этой страницы. Он изучает правила очистки и возвращает похожие элементы. Затем вы можете использовать этот изученный объект с новыми URL-адресами, чтобы получить аналогичный контент или точно такой же элемент этих новых страниц.
Установка
Он используется с python3.
Установить из исходников:
$ python setup.py install
Установите последнюю версию из репозитория git с помощью pip:
$ pip install git + https: //github.com/alirezamika/autoscraper.git
Как использовать
Получение аналогичных результатов
Скажем, мы хотим получить все связанные заголовки сообщений на странице stackoverflow:
from autoscraper import AutoScraper url = 'https://stackoverflow.com/questions/2081586/web-scraping-with-python' # Здесь мы можем добавить одного или нескольких кандидатов. # Вы также можете указать здесь URL-адреса для получения URL-адресов. Wish_list = ["How to call an external command?"] scraper = AutoScraper () result = scraper . build ( url , wish_list ) print ( result)
Вот результат:
[
'How do I merge two dictionaries in a single expression in Python (taking union of dictionaries)?',
'How to call an external command?',
'What are metaclasses in Python?',
'Does Python have a ternary conditional operator?',
'How do you remove duplicates from a list whilst preserving order?',
'Convert bytes to a string',
'How to get line count of a large file cheaply in Python?',
"Does Python have a string 'contains' substring method?",
'Why is “1000000000000000 in range(1000000000000001)” so fast in Python 3?'
]
Теперь вы можете использовать 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() # Здесь мы также можем передавать html-контент через параметр html вместо url (html = html_content) result = scraper.build(url, wanted_list) print(result)
Вы также можете передать любой настраиваемый запрос
параметр модуля. например, вы можете использовать прокси или настраиваемые заголовки:
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
метод, он будет получать данные в том же точном порядке в списке поиска.
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)
Все просто, правда?
Теперь мы можем сохранить построенную модель, чтобы использовать ее позже. Сохранить:
# Вставте путь к файлу scraper.save('yahoo-finance')
И загрузить:
scraper.load('yahoo-finance')
Посмотрите здесь, чтобы узнать о более продвинутых способах использования.
А на этом всё, с вами Frost и канал X@ker.
Как всегда, не забывайте ставить лайки и подписываться на канал, всем спасибо за внимание!