Pular para conteúdo

Passo a Passo (BASH)


Crie um ambiente virtual

python3 -m venv venv

Ative o ambiente

  • windowns venv\Script\activate
  • Linux source venv/bin/activate

Instalação

pip install scrapy

Executar

scrapy shell <link>

Outros Comandos

response.css('cssPath')

response.xpath("xPath")



Exemplo de codigo Scrapy utilizando uma noticia da CNN

import scrapy
from scrapy.crawler import CrawlerProcess

class Feminicidio(scrapy.Spider):
    name = 'Feminicidio'

    def start_requests(self):
        yield scrapy.Request('https://www.cnnbrasil.com.br/?search=feminicidio')

    def parse(self, response, **kwargs):
        for news in response.css("ul").css('figure'):
            yield {
                'link': news.css('a').attrib['href']
            }


process = CrawlerProcess(settings={
    'FEED_FORMAT': 'json',
    'FEED_URI': 'result.json',
})

process.crawl(Feminicidio)
process.start() 


Resultado

[
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/filha-de-pm-morta-por-tenente-coronel-vai-receber-pensao-um-mes-apos-pedido/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/tarcisio-fala-sobre-aposentadoria-de-tenente-coronel-vai-para-familiares/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/tenente-preso-por-matar-pm-recebera-aposentadoria-mesmo-se-for-expulso/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/para-ela-sobrou-o-caixao-dizem-pais-de-pm-sobre-aposentadoria-de-tenente/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/tenente-coronel-reu-por-matar-esposa-pm-se-aposenta-com-salario-integral/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/rj/homem-e-condenado-a-80-anos-de-prisao-por-matar-tres-criancas-em-paraty/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sul/sc/autor-de-ataque-a-creche-em-blumenau-e-condenado-por-esfaquear-cachorro/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/rj/empresas-reforcam-compromisso-no-combate-ao-feminicidio-em-evento-no-rio/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/secretario-de-seguranca-de-sao-paulo-detalha-combate-a-quebra-vidros/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/mulher-pula-do-2o-andar-com-filha-para-fugir-de-ex-em-suzano-sp/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/rj/mulher-e-encontrada-morta-apos-suspeita-de-envenenamento-no-rj/"},
{"link": "https://www.cnnbrasil.com.br/nacional/nordeste/pe/adolescente-atira-em-ficante-e-e-apreendido-por-tentativa-de-feminicidio/"},
{"link": "https://www.cnnbrasil.com.br/nacional/nordeste/pe/empresario-e-indiciado-por-atirar-20-vezes-na-porta-da-ex-companheira-em-pe/"},
{"link": "https://www.cnnbrasil.com.br/nacional/sudeste/sp/feminicidios-sobem-31-em-sao-paulo-no-bimestre/"},
{"link": "https://www.cnnbrasil.com.br/nacional/nordeste/ba/homem-e-preso-apos-esfaquear-mulher-e-esconder-o-corpo-no-freezer/"}
]

Estudo de PlayWright


Código Inicial

esse código pega o link e o titulo de noticias sobre feminicidio publicadas no g1

from playwright.sync_api import sync_playwright, expect
import time # biblioteca de timer não necessaria para o playwright

with sync_playwright() as pw:
    browser = pw.firefox.launch(headless=False) # selecionando o firefox como navegador

    page1 = browser.new_page() # criando uma nova aba
    page1.goto("https://g1.globo.com/busca/?q=feminicidio", wait_until='load') # indo para pagina do g1 ja com o filtro do feminicidio
    page1.locator("a").filter(has_text="Filtrar por Data").click() # abrindo filtro
    page1.get_by_text("Nas últimas 24 horas").click() # filtrando noticias do ultimo dia

    time.sleep(4) # timer de 4 segundos

    newsContent = page1.locator('[class *= widget--info__text-container] > a').all() # pegando todas as noticias

    allnews = []
    for news in newsContent:
        allnews.append({
            'Link' : news.get_attribute(name="href"),
            "Title" : news.locator('[class *= widget--info__title]').text_content()
        })

    browser.close()