Página inicial da Amazon com uma consulta de pesquisa de Octopus.
mkdir scraping-amazon-python
cd scraping-amazon-python
pip install httpx
pip3 install pandas
pip3 install playwright
playwright install
Certifique-se de que o processo de instalação seja concluído sem problemas antes de prosseguir para a próxima etapa. Se encontrar dificuldades durante a configuração do ambiente, você pode consultar serviços de IA como ChatGPT, Mistral AI e outros. Esses serviços podem ajudar na solução de erros e fornecer instruções passo a passo para resolvê-los.
import httpx
from playwright.async_api import async_playwright
import asyncio
import pandas as pd
# Profile's uuid from Octo
PROFILE_UUID = "UUID_SHOULD_BE_HERE"
# searching request
SEARCH_REQUEST = "fashion"
async def main():
async with async_playwright() as p:
async with httpx.AsyncClient() as client:
response = await client.post(
'http://127.0.0.1:58888/api/profiles/start',
json={
'uuid': PROFILE_UUID,
'headless': False,
'debug_port': True
}
)
if not response.is_success:
print(f'Start response is not successful: {response.json()}')
return
start_response = response.json()
ws_endpoint = start_response.get('ws_endpoint')
browser = await p.chromium.connect_over_cdp(ws_endpoint)
page = browser.contexts[0].pages[0]
# Opening Amazon
await page.goto(f'https://www.amazon.com/s?k={SEARCH_REQUEST}')
# Extract information
results = []
listings = await page.query_selector_all('div.a-section.a-spacing-small')
for listing in listings:
result = {}
# Product name
name_element = await listing.query_selector('h2.a-size-mini > a > span')
result['product_name'] = await name_element.inner_text() if name_element else 'N/A'
# Rating
rating_element = await listing.query_selector('span[aria-label*="out of 5 stars"] > span.a-size-base')
result['rating'] = (await rating_element.inner_text())[0:3] if rating_element else 'N/A'
# Number of reviews
reviews_element = await listing.query_selector('span[aria-label*="stars"] + span > a > span')
result['number_of_reviews'] = await reviews_element.inner_text() if reviews_element else 'N/A'
# Price
price_element = await listing.query_selector('span.a-price > span.a-offscreen')
result['price'] = await price_element.inner_text() if price_element else 'N/A'
if(result['product_name']=='N/A' and result['rating']=='N/A' and result['number_of_reviews']=='N/A' and result['price']=='N/A'):
pass
else:
results.append(result)
# Close browser
await browser.close()
return results
# Run the scraper and save results to a CSV file
results = asyncio.run(main())
df = pd.DataFrame(results)
df.to_csv('amazon_products_listings.csv', index=False)
Ao iniciar o navegador e navegar para a URL de destino da Amazon, você extrairá informações dos produtos: nome, avaliação, contagem de avaliações e preço. Após iterar por cada listagem na página, você pode filtrar as listagens que não possuem dados, que o script marcará como "N/A". Os resultados da pesquisa serão salvos em um Pandas DataFrame e, em seguida, exportados para um arquivo CSV chamado amazon_products_listings.csv.
Além de um navegador multiconta, proxies de alta qualidade e um script bem pensado que simula o comportamento humano, um solucionador de CAPTCHA automático também pode ser útil. Para isso, você pode usar soluções OSS, serviços de solução manual como 2captcha e anti-captcha ou solucionadores automatizados como Capmonster.
O papel dos navegadores multiconta em contornar os sistemas de segurança dos sites está na manipulação da impressão digital. Usando um navegador multiconta, você pode criar vários de navegador, que são cópias virtuais do navegador, isoladas umas das outras e com seu próprio conjunto de características e configurações: cookies, histórico de navegação, extensões, proxies, parâmetros de impressão digital. Cada perfil de navegador multiconta aparece para os sistemas de segurança dos sites como um usuário separado.
No Octo Browser, toda a documentação necessária para começar está disponível aqui e as instruções detalhadas da API podem ser encontradas aqui.
Use Python para pesquisar eficientemente produtos, avaliações, descrições e preços na Amazon. Escrever o código necessário pode levar algum tempo e esforço, mas os resultados superarão todas as expectativas. Para evitar a atenção dos sistemas de segurança, simule o comportamento natural do usuário, use endereços IP de terceiros e altere regularmente a impressão digital. Ferramentas especializadas, como navegadores multiconta e servidores proxy, permitirão que você alterne impressões digitais de navegador e endereços IP para contornar restrições e aumentar a velocidade do web scraping.