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

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


Frost

Этот проект предназначен для автоматического парсинга веб-страниц, чтобы упростить парсинг. Он получает 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


Как всегда, не забывайте ставить лайки и подписываться на канал, всем спасибо за внимание!

Report Page