Представляем AutoScraper: умный, быстрый и легкий веб-скрейпер для Python

В последние несколько лет просмотр веб-страниц был одной из моих повседневных и часто необходимых задач. Мне было интересно, могу ли я сделать его умным и автоматическим, чтобы сэкономить много времени. Итак, я сделал AutoScraper!

Код проекта доступен здесь. Он стал самым популярным проектом на Github.

1*yD2rFqCzI8JlYnAANDexyQ.jpeg

Этот проект создан для автоматического парсинга веб-страниц, чтобы упростить парсинг.
Он получает URL-адрес или html-контент веб-страницы и список примеров данных, которые мы хотим извлечь с этой страницы. Эти данные могут быть текстом, URL-адресом или любым значением HTML-тега этой страницы. Он изучает правила парсинга и возвращает похожие элементы. Затем вы можете использовать этот изученный объект с новыми URL-адресами, чтобы получить аналогичный контент или точно такой же элемент этих новых страниц.

Монтаж

Он совместим с питоном 3.

  • Установите последнюю версию из репозитория git, используя pip:
$ pip install git+
$ pip install autoscraper
$ python setup.py install

Как использовать

Получение аналогичных результатов

Скажем, мы хотим получить все связанные заголовки сообщений на странице stackoverflow:

from autoscraper import AutoScraper

url = '



wanted_list = ["How to call an external command?"]

scraper = AutoScraper()
result = scraper.build(url, wanted_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 = '

wanted_list = ["124.81"]

scraper = AutoScraper()


result = scraper.build(url, wanted_list)
print(result)

Обратите внимание, что вам следует обновить wanted_list если вы хотите скопировать этот код, так как содержимое страницы динамически меняется.

Вы также можете передать любой пользовательский 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:

from autoscraper import AutoScraper

url = '

wanted_list = ['A Smart, Automatic, Fast and Lightweight Web Scraper for Python', '2.5k', 'https://github.com/alirezamika/autoscraper/issues']

scraper = AutoScraper()
scraper.build(url, wanted_list)

Просто, верно?

Сохранение модели

Теперь мы можем сохранить построенную модель, чтобы использовать ее позже. Сохранить:


scraper.save('yahoo-finance')

И для загрузки:

scraper.load('yahoo-finance')

Учебники

  • Видеть это суть для более продвинутого использования.
  • Чтобы продемонстрировать возможности AutoScraper, я написал руководство по созданию API с любого веб-сайта менее чем за 5 минут и менее чем за 20 строк кода. Вы можете прочитать это здесь.

Спасибо

Не стесняйтесь обращаться, если у вас есть какие-либо вопросы.

Удачного кодирования ♥️

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *