Este artigo explora o método de recolha de dados do Pinterest utilizando Python e Playwright, uma biblioteca de automatização robusta. O Pinterest, conhecido por seu rico conteúdo visual, serve como um terreno fértil para análise de dados ou iniciativas de automação. Especificamente, a extração de URLs de imagens a partir de resultados de pesquisa pode ser crucial para a investigação ou para empreendimentos comerciais.
O Playwright facilita a automatização de sessões interactivas em vários navegadores. Possui caraterísticas como a interceção de pedidos de rede, o que permite a extração direta de dados do tráfego. Além disso, a sua capacidade de funcionar num modo sem renderização aumenta a eficiência e a escalabilidade da recolha de dados. A utilização de proxies, embora opcional, é recomendada para garantir o anonimato e para ajudar a contornar potenciais bloqueios, solidificando assim o Playwright como uma ferramenta preferida para a recolha de conteúdos visuais do Pinterest.
Antes de começarmos, você precisa instalar o Playwright no seu ambiente Python. Você pode instalá-lo usando pip:
pip install playwright
Uma vez instalado, terá de instalar os binários do browser:
playwright install
Agora, vamos ver um script básico para extrair URLs de imagens do Pinterest.
O guião, cuja versão completa é apresentada a seguir, inclui os seguintes elementos
A função principal cria um URL de consulta de pesquisa do Pinterest com base na entrada do utilizador, por exemplo, https://in.pinterest.com/search/pins/?q=halloween%20decor, e depois passa-o para a função capture_images_from_pinterest.
A página do Playwright escuta as respostas da rede utilizando page.on('response', ...).
A função handle_response filtra as respostas da rede, assegurando que apenas as que têm imagens do tipo recurso e URLs que terminam em .jpg são capturadas.
Depois de recolher os URLs das imagens, guardamo-los num ficheiro CSV com o nome pinterest_images.csv, o que facilita a exportação e a análise dos dados extraídos.
Aqui está o código Python que extrai os resultados de pesquisa do Pinterest e extrai todos os URLs de imagens:
import asyncio
from playwright.async_api import async_playwright
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
# Armazenar URLs de imagens com a terminação '.jpg'
image_urls = []
# Função para intercetar e processar respostas da rede
page.on('response', lambda response: handle_response(response, image_urls))
# Navegar para o URL
await page.goto(url)
# Aguardar que a atividade da rede se estabilize (ajustar se necessário)
await page.wait_for_timeout(10000)
# Fechar o browser
await browser.close()
return image_urls
# Função de manipulador para verificar URLs de imagens .jpg
def handle_response(response, image_urls):
if response.request.resource_type == 'image':
url = response.url
if url.endswith('.jpg'):
image_urls.append(url)
# Função principal para executar a tarefa assíncrona
async def main(query):
url = f"https://in.pinterest.com/search/pins/?q={query}"
images = await capture_images_from_pinterest(url)
# Guardar imagens num ficheiro CSV
with open('pinterest_images.csv', 'w') as file:
for img_url in images:
file.write(f"{img_url}\n")
print(f"Saved {len(images)} image URLs to pinterest_images.csv")
# Executar a função principal assíncrona
query = 'halloween decor'
asyncio.run(main(query))
O scraping do Pinterest pode desencadear a limitação da taxa ou mesmo proibições se fizer demasiados pedidos a partir do mesmo endereço IP. Os proxies ajudam a atenuar esta situação, encaminhando os seus pedidos através de diferentes endereços IP, fazendo parecer que vários utilizadores estão a navegar no Pinterest.
Porquê utilizar proxies:
Pode configurar facilmente proxies com o Playwright utilizando o argumento proxy no método de lançamento. Neste exemplo, substitua "http://your-proxy-address:port" pelo endereço do seu servidor proxy, número da porta e credenciais do proxy.
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
# Adicionar proxy aqui
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
page = await browser.new_page()
Consequentemente, a integração do Playwright com um proxy aumenta a eficácia da automatização da recolha de dados. Esta combinação não só atenua os riscos colocados pelos mecanismos anti-bot, como também aumenta a eficiência global dos processos de recolha de dados.
Existem vários desafios que os utilizadores podem enfrentar quando utilizam o Playwright para extrair dados do Pinterest:
A utilização do Playwright com proxies e em modo headless pode mitigar eficazmente estes desafios, reduzindo o risco de bloqueios e melhorando a eficiência da extração de dados.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Comentários: 0