
Este proyecto está hecho para el raspado web automático para facilitar el raspado. Obtiene una URL o el contenido HTML de una página web y una lista de datos de muestra que queremos raspar de esa página. Estos datos pueden ser texto, URL o cualquier valor de etiqueta HTML de esa página. Aprende las reglas de raspado y devuelve los elementos similares. Luego puede usar este objeto aprendido con nuevas URL para obtener contenido similar o exactamente el mismo elemento de esas nuevas páginas.
Es compatible con Python 3.
$ pip install git+https://github.com/alirezamika/autoscraper.git$ pip install autoscraper$ python setup.py installDigamos que queremos obtener todos los títulos de publicación relacionados en una 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 )Aquí está la salida:
[
'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?'
] Ahora puede usar el objeto scraper para obtener temas relacionados de cualquier página de StackoverFlow:
scraper . get_result_similar ( 'https://stackoverflow.com/questions/606191/convert-bytes-to-a-string' )Digamos que queremos raspar los precios de las acciones en vivo de 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 ) Tenga en cuenta que debe actualizar el wanted_list si desea copiar este código, ya que el contenido de la página cambia dinámicamente.
También puede pasar cualquier parámetro del módulo requests personalizadas. Por ejemplo, es posible que desee usar proxies o encabezados 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 ))Ahora podemos obtener el precio de cualquier símbolo:
scraper . get_result_exact ( 'https://finance.yahoo.com/quote/MSFT/' ) Es posible que desee obtener otra información también. Por ejemplo, si también desea obtener capitalización de mercado, puede agregarlo a la lista de deseos. Al usar el método get_result_exact , recuperará los datos como el mismo orden exacto en la lista de deseos.
Otro ejemplo: digamos que queremos raspar el texto, el número de estrellas y el enlace a los problemas de las páginas de repose de GitHub:
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 )Simple, ¿verdad?
Ahora podemos guardar el modelo construido para usarlo más tarde. Para guardar:
# Give it a file path
scraper . save ( 'yahoo-finance' )Y para cargar:
scraper . load ( 'yahoo-finance' )No dude en abrir un problema si tiene algún problema usando el módulo.