
Этот проект создан для автоматического соскоба для сети, чтобы упростить соскоб. Он получает URL или HTML -контент на веб -странице и список образцов данных, которые мы хотим соскрести со этой страницы. Эти данные могут быть текстовыми, URL -адресом или любым значением тега HTML этой страницы. Он изучает правила очистки и возвращает аналогичные элементы. Затем вы можете использовать этот ученый объект с новыми URL -адресами, чтобы получить аналогичный контент или тот же элемент этих новых страниц.
Он совместим с Python 3.
$ pip install git+https://github.com/alirezamika/autoscraper.git$ pip install autoscraper$ python setup.py installСкажем, мы хотим принести все связанные заголовки Post на странице Stackoverflow:
from autoscraper import AutoScraper
url = 'https://stackoverflow.com/questions/2081586/web-scraping-with-python'
# We can add one or multiple candidates here.
# You can also put urls here to retrieve urls.
wanted_list = [ "What are metaclasses in Python?" ]
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 = '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 ) Обратите внимание, что вам следует обновить 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 Repo Pages:
from autoscraper import AutoScraper
url = 'https://github.com/alirezamika/autoscraper'
wanted_list = [ 'A Smart, Automatic, Fast and Lightweight Web Scraper for Python' , '6.2k' , 'https://github.com/alirezamika/autoscraper/issues' ]
scraper = AutoScraper ()
scraper . build ( url , wanted_list )Просто, верно?
Теперь мы можем сохранить встроенную модель, чтобы использовать ее позже. Чтобы сохранить:
# Give it a file path
scraper . save ( 'yahoo-finance' )И загружать:
scraper . load ( 'yahoo-finance' )Не стесняйтесь открывать проблему, если у вас есть какие -либо проблемы с использованием модуля.