
Este projeto é feito para raspagem automática da Web para facilitar a raspagem. Ele obtém um URL ou o conteúdo HTML de uma página da Web e uma lista de dados de amostra que queremos raspar dessa página. Esses dados podem ser texto, URL ou qualquer valor de tag html dessa página. Aprende as regras de raspagem e retorna os elementos semelhantes. Em seguida, você pode usar esse objeto aprendido com novos URLs para obter conteúdo semelhante ou exatamente o mesmo elemento dessas novas páginas.
É compatível com Python 3.
$ pip install git+https://github.com/alirezamika/autoscraper.git$ pip install autoscraper$ python setup.py installDigamos que queremos buscar todos os títulos de postagens relacionados em uma página de 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 )Aqui está a saída:
[
'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?'
] Agora você pode usar o objeto scraper para obter tópicos relacionados de qualquer página do StackOverflow:
scraper . get_result_similar ( 'https://stackoverflow.com/questions/606191/convert-bytes-to-a-string' )Digamos que queremos raspar os preços ao vivo das ações da 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 ) Observe que você deve atualizar o wanted_list se deseja copiar este código, conforme o conteúdo da página altera dinamicamente.
Você também pode passar qualquer parâmetro de módulo requests personalizadas. Por exemplo, você pode querer usar proxies ou cabeçalhos personalizados:
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 ))Agora podemos obter o preço de qualquer símbolo:
scraper . get_result_exact ( 'https://finance.yahoo.com/quote/MSFT/' ) Você pode querer obter outras informações também. Por exemplo, se você também deseja obter um valor de mercado, basta anexá -lo à lista de desejos. Ao usar o método get_result_exact , ele recuperará os dados como o mesmo pedido exato na lista procurada.
Outro exemplo: digamos que queremos raspar o texto sobre o texto, o número de estrelas e o link para questões das páginas do Github Repo:
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 )Simples, certo?
Agora podemos salvar o modelo construído para usá -lo mais tarde. Para economizar:
# Give it a file path
scraper . save ( 'yahoo-finance' )E carregar:
scraper . load ( 'yahoo-finance' )Sinta -se à vontade para abrir um problema se tiver algum problema em usar o módulo.