Como extrair dados do Pinterest usando Python

Comentários: 0

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.

Configurar o Playwright para Python

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 processo de extração de dados do Pinterest

O guião, cuja versão completa é apresentada a seguir, inclui os seguintes elementos

Função principal

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.

Interceção e filtragem

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.

Guardar dados em CSV

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.

Código completo

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))

Configurar proxies no Playwright

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:

  • Evitar bloqueios de IP: O Pinterest pode bloquear temporariamente o seu endereço IP se detetar uma atividade invulgar. Os proxies ajudam a evitar esta situação através da rotação de endereços IP.
  • Escalabilidade: A utilização de proxies permite o escalonamento dos esforços de scraping, minimizando o risco de bloqueio.
  • Aumentar os limites de solicitação: A utilização de proxies permite-lhe extrair mais dados sem acionar os limites de taxa.

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.

Desafios da recolha de dados do Pinterest

Existem vários desafios que os utilizadores podem enfrentar quando utilizam o Playwright para extrair dados do Pinterest:

  • Carregamento dinâmico de conteúdos: O Pinterest utiliza técnicas de carregamento dinâmico de conteúdos, incluindo scrolling infinito e imagens de carregamento lento. Isto exige ferramentas de raspagem que possam lidar eficazmente com o carregamento assíncrono de dados.
  • Medidas anti-raspagem: sítios Web como o Pinterest utilizam vários mecanismos anti-raspagem, como a limitação da taxa, para dificultar os esforços de extração automática de dados.

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.

Comentários:

0 Comentários