Primeiro, vamos criar um novo diretório que irá armazenar os nossos ficheiros. Em seguida, abra o projeto no seu IDE favorito (o meu é o Visual Studio Code) e abra um novo terminal. Para abrir um novo terminal a partir do VSCode, vá a Terminal > Novo terminal. Vamos criar um novo ambiente virtual dentro do projeto e ativá-lo:
~ » python3 -m venv env && source env/bin/activate
No seu projeto, vamos criar um novo ficheiro «scraper.py» e adicionar-lhe algum código. A estrutura básica de um scraper com Selenium, numa perspetiva de programação funcional, é:
from selenium import webdriver
def scrape_page(url):
driver = webdriver.Chrome()
driver.get(url)
return driver.page_source
E é isso. Em 5 linhas de código:
- Estamos a iniciar um navegador automatizado
- Estamos a aceder ao nosso alvo
- E estamos a recolher os seus recursos.
Mas lembre-se de que queremos usar proxies de ISP com o Selenium. De modo que o nosso navegador não seja o mais discreto, mas digamos que seja mais indetetável. Felizmente, as coisas são bastante simples em Python (e é por isso que adoro-o). Eis como introduzimos proxies no 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'))
Apenas adicionámos mais linhas dentro da função. A última serve para chamar a função. Se executar o script agora, provavelmente conseguiremos ver que o pedido tem origem em 75.89.101.60. Para efeitos deste exemplo, utilizei um servidor proxy gratuito disponível aqui. Mas se quiseres criar um scraper a sério, sugiro que procures fontes mais fiáveis. De preferência, fornecedores de proxy que também ofereçam proxies ISP.