Lo primero es lo primero: creemos un nuevo directorio que albergará nuestros archivos. A continuación, abre el proyecto en tu IDE favorito (el mío es Visual Studio Code) y abre un nuevo terminal. Para abrir un nuevo terminal desde VSCode, ve a Terminal > Nuevo terminal. Crearemos un nuevo entorno virtual dentro del proyecto y lo activaremos:
~ » python3 -m venv env && source env/bin/activate
En tu proyecto, vamos a crear un nuevo archivo «scraper.py» y añadirle algo de código. La estructura básica de un scraper con Selenium, desde una perspectiva de programación funcional, es:
from selenium import webdriver
def scrape_page(url):
driver = webdriver.Chrome()
driver.get(url)
return driver.page_source
Y eso es todo. En 5 líneas de código:
- Estamos iniciando un navegador automatizado
- Accedemos a nuestro objetivo
- Y estamos recopilando sus recursos.
Pero recuerda que queremos usar proxies de ISP con Selenium. De tal forma que nuestro navegador no sea el más sigiloso, pero digamos que sea más difícil de detectar. Por suerte, las cosas son bastante sencillas en Python (y por eso me encanta). Así es como introducimos proxies en Selenium:
from selenium import webdriver
def scrape_page(url, proxy):
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % proxy)
driver = webdriver.Chrome(options=options)
driver.get(url)
return driver.page_source
print(scrape_page('http://httpbin.org/ip', '75.89.101.60:80'))
Solo hemos añadido más líneas dentro de la función. La última es para llamar a la función. Si ejecutas el script ahora, probablemente podamos ver que la solicitud proviene de 75.89.101.60. Para este ejemplo, he utilizado un servidor proxy gratuito de aquí. Pero si quieres crear un scraper de verdad, te sugiero que busques fuentes más fiables. Preferiblemente, proveedores de proxies que también ofrezcan proxies de ISP.