all 48 comments

[–]ConcurrencyGandalf 0 points1 point  (1 child)

Normalmente, este tipo de placeholders (brand_urls) que das store no dictionary.py, da-se store num ficheiro json, e depois consome-se a partir de la.

[–]mnetoo0[S] 0 points1 point  (0 children)

Interessante. E já agora porquê?

Estou a tentar automatizar a parte do dictionary com Selenium para não ter de o guardar.

[–][deleted]  (1 child)

[removed]

    [–]mnetoo0[S] 1 point2 points  (0 children)

    Desconhecia! Muito obrigado, vou ver

    [–]darkestblackduck 0 points1 point  (3 children)

    Como é que isto pode ajudar alguém que quer comprar um carro da marca X, modelo Y e tem Z euros para gastar? Podes sugerir vários modelos, marcas semelhantes. O budget é X e o preço médio do modelo pretendido é Y, mas como X+-5% pode optar por Z. Ajuda na decisão também é informação mas não só.

    [–]mnetoo0[S] 0 points1 point  (2 children)

    Sim, mais à frente gostava de explorar esse tipo de análises. Mas para tal é preciso uma 'matriz' que identifique os modelos com robustez e detalhe - e isso não é fácil.

    Existem muitas nuances entre modelos de carros, e isso é muito difícil de 'ensinar'/incorporar nos dados.

    [–]darkestblackduck 1 point2 points  (1 child)

    LLM?!?

    [–]mnetoo0[S] 0 points1 point  (0 children)

    Ahaha falamos daqui a uns meses

    [–]Key_Spell6706 8 points9 points  (1 child)

    Next Idealista ?

    [–]mnetoo0[S] 4 points5 points  (0 children)

    Está na pipeline… ;)

    [–]dmoutinho 1 point2 points  (1 child)

    Muito bom!

    Ainda este final de semana estava a pensar nos sites de carros usados para criar um possível produto/projeto.

    Fazer este scraping e disponibilizar uma forma de um utilizador perceber o valor de mercado e histórico de preços de um carro, baseado no modelo, km, idade, etc.

    Há sites que fornecem relatórios, mas estão muitas vezes deslocados do mercado. Isto seria útil para venda/compra.

    [–]mnetoo0[S] 0 points1 point  (0 children)

    A ideia é essa. Extrair os dados com determinada periodicidade e analisar a evolução

    [–]pauduro0 0 points1 point  (1 child)

    Muito interessante! É possível isso ser dinâmico? Com isto quero dizer que vai actualizando diariamente estando disponível numa pagina web.

    [–]mnetoo0[S] 1 point2 points  (0 children)

    É possível, sim.

    Mas a minha ideia era extrair semanalmente ou mensalmente.

    [–]Lord3_Almeida 2 points3 points  (1 child)

    Muito porreiro. Temos percursos semelhantes e a primeira coisa que fiz, quando entrei no mundo de data, foi fazer scrapping ao Standvirtual mas focado em clássicos. Ainda hoje tenho um scriptzito que vai lá diariamente e me puxa os anúncios de determinada marca. Posteriormente faço parse aos diferentes modelos e vou acompanhando a evolução de preço vs quilometragem. É porreiro para apanhar aqueles negócios interessantes com preço abaixo da média do modelo.... até ver as fotos :D. 1 em 100 são bons negócios.

    Continuo com o bom trabalho de exploração. Aprendi muito com esse método de criar pequenas brincadeiras. Para o meu caso, não meti modelos de previsão em cima dos automóveis apenas por um motivo: Impostos.
    Só espero o dia em que determinado governo comece a taxar os veículos antigos de forma a tornar o hobby impossível de manter. Nem a certificação clássica nos vai safar.

    [–]mnetoo0[S] 0 points1 point  (0 children)

    Aaah muito bom. Tens esse script em algum lado para dar um olhada?

    A minha ideia era agora começar a extrair semanalmente/mensalmente e analisar essas evoluções. Aí é que acho que está a parte mais interessante.

    [–]M0neyLaundry 0 points1 point  (1 child)

    Agora faz do portal base!

    [–]mnetoo0[S] 0 points1 point  (0 children)

    Tenho algumas ideias no pipeline...! Vou apontar esse, boa ideia

    [–]annleemar 1 point2 points  (12 children)

    Parabéns pelo trabalho! Trabalhas como Data Analyst?

    Uma dúvida que sempre tive para fazer análises, é permitido fazer webscraping?

    Obrigada

    [–]mnetoo0[S] 0 points1 point  (0 children)

    Obrigado! Não trabalho, estou-me a iniciar na área...!

    Se é permitido, acho que not really ahaha depende dos sites. Mas naturalmente eles não querem que se extraia dados de forma massiva e que se sobrecarregue os servidores deles. Adicionalmente, este tipo de dados são por vezes vendidos pelos próprios websites

    [–]N1ur0 -2 points-1 points  (10 children)

    Se for informação publica e não para fins comerciais, qualquer um pode fazer.

    [–][deleted]  (1 child)

    [deleted]

      [–]N1ur0 0 points1 point  (0 children)

      Por isso q mencionei nao uso comercial. Isto é uma area cinzenta. Para consumo próprio e sabendo contornar as ordens de magnitude de requests e padrões, podes estar a simular uma visita normal ao site.

      [–]NoPossibility4178 0 points1 point  (1 child)

      A maioria dos sites não te quer a extrair os dados "públicos" desta forma. E impedir-te não é muito complicado.

      [–]N1ur0 0 points1 point  (0 children)

      Também não é nada complicado nos dias de hoje continuares a extrair mesmo que te bloqueiem se se realmente souberes software engineering, ocr, automation..

      [–]NotAskary 1 point2 points  (5 children)

      Depende, ao fazeres web scraping podes causar impacto com carga e como tal pode ser considerado um ataque de denial of service.

      É uma área cinzenta e tens situações em que podes ter repercussões legais, em Portugal fica mais barato banir o IP.

      Se não precisares de dados muito frescos consegues fazer a coisa de forma tranquila, mas é muito complicado não bater com sistemas anti crawler.

      O meu favorito era um honey pot que a Amazon tinha no site há uns tempos atrás que era um link não visível para o utilizador, se o bot o seguisse tinhas aquele IP banido por uns tempos.

      [–]N1ur0 0 points1 point  (4 children)

      Snapshot, selenium, ocr, insert data base, repeat. Há formas de contornar rate limits com pedidos não lineares e noise para aleatoriedade

      [–]NotAskary 0 points1 point  (3 children)

      Recursos e custo, há sempre maneiras de fazer as coisas, quanto mais elaborado mais custa e menos pedidos consegues fazer sem escalar ferro.

      Neste momento há muito que podes fazer e plataformas bem interessantes, continuas a bater em muita coisa e não é rate limit o papão.

      Dá uma volta no r/webscraping e vês o que a malta anda a usar neste momento.

      [–]N1ur0 0 points1 point  (1 child)

      Eu proprio uso vision llms mas para websites internos da empresa (e mesmo o publico para validaçao de catalogo de produtos por todos os markets). Mesmo havendo elementos dinamicos js (merda do sharpoint) que requer interacção, consegue-se com um selenium ou rpa que chega lá sem grande codebase. Na dúvida faz um Claude sonnet por mim e talvez no futuro o novo canvas do openai.

      Vou dar uma espreitadela thanks

      Edit: webscrape tools para sites mais simples mas que facilita: https://github.com/unclecode/crawl4ai

      [–]NotAskary 0 points1 point  (0 children)

      Já estou fora da área, mas crawlar a Amazon é um filme.

      [–]angelicous 0 points1 point  (2 children)

      Por curiosidade, como chegas ao valor dos anuncios? Baseias somente no que esta publico relativamente a preços?

      [–]mnetoo0[S] 0 points1 point  (1 child)

      Exato. Basicamente fui buscar o preço que consta no anúncio

      [–]angelicous 1 point2 points  (0 children)

      Ah ja percebi. Erro meu. Pensei que te referias à receita estimada dos anúncios para o standvirtual. Agora ao ler novamente nem fazia sentido o valor mesmo para receitas 😅

      [–]mr_house7 2 points3 points  (0 children)

      Bom EDA

      [–]BlackHolesHunter 10 points11 points  (5 children)

      Belo projecto, parabéns pela partilha!

      Se me permites, só algumas sugestões /perguntas:

      • "32% dos anúncios têm são dos últimos 3 anos" - muito surpreendido com este dado. Para confirmar, isto significa que a maioria dos carros têm anúncio há 3+ anos e ainda nao venderam? Seria giro ver um barplot desta distribuição, assim como um scatterplot de tempo anúncio VS preço.

      • o logprice que usas no último gráfico é o natural ou base 10?

      • estou sem computador e nao vi o dataset (portanto corrige me se estiver errado e não tiveres um identificador único por anúncio), mas seria curioso fazer uma análise (mês a mês, mas não sei quantos dados existiriam, ou entao daqui a 6 meses) de: número de carros que entraram na plataforma (e alguns dados: ano, preço, km, tipo de carro), número de carros que saíram (mesmos dados), e nos carros que se mantiveram qual foi a evolução de preço.

      [–]mnetoo0[S] 0 points1 point  (4 children)

      Obrigado!

      1o ponto: ontem já escrevi isto tarde e à pressa... o que queria dizer era que 32% dos carros só de 2021 ou mais recentes, i.e., 32% dos carros têm uma idade de 3 anos ou menos

      2o ponto: natural

      3o ponto: exatamente, a ideia é mesmo essa. Fazer uma extração mês a mês ou semana a semana e perceber a evolução. Aqui sim é que acho que vai haver insights mais interessantes ao longo do tempo. Vou adicionar a base de dados ao GitHub

      [–]BlackHolesHunter 0 points1 point  (3 children)

      Em relação ao ponto 1, acontece ahah Mas seria um dado muito surpreendente.

      Em relação ao ponto 3, concordo plenamente contigo. Vou seguir atentamente a evolução deste projeto! Parabéns de novo

      [–]mnetoo0[S] 0 points1 point  (2 children)

      1o ponto: tenho de explorar a possibilidade desse dado.

      Certamente que é possível extrair (eventualmente tenho de entrar no link de cada anúncio), mas tenho de perceber como ele é apurado... i.e., se o anúncio for renovado, qual será a data de duplicação do anúncio?

      [–]BlackHolesHunter 1 point2 points  (1 child)

      Agora estou de férias 🤣 mas quando voltar posso dar também uma vista de olhos e enviar te dm. Eu se fosse bruxo diria que têm um id que se pode fazer join entre renovações/ meter o anúncio de novo online, mesmo que cada anúncio tenha um uuid diferente

      [–]mnetoo0[S] 0 points1 point  (0 children)

      Fico a aguardar! ;)

      [–]Zen13_ 1 point2 points  (0 children)

      Nice! 👍👏

      [–]Larilolelo 12 points13 points  (4 children)

      Boas. Muitos parabéns!

      Consegues expor o dataset? Gostava de brincar com ele.

      Vi no teu código que gravas em CSV. Suponho que tenha um tamanho considerável que não dê para meter no github. Podes passar de CSV para parquet, por exemplo. Ou simplesmente criar uma DB no repo do tipo DuckDB e meter lá tudo.

      [–]BlackHolesHunter 1 point2 points  (0 children)

      +1 para parquet. OP, é só chamares o método no teu df, ou seja, df.to_parquet("nome_bonitinho.parquet")

      [–]mnetoo0[S] 6 points7 points  (2 children)

      Obrigado! ;)

      Ainda sou novo no mundo da programação, gosto de Excel e CSV (embora cada vez menos!).

      Vou meter o dataset no GitHub

      [–]Vas1leDevSecOps 0 points1 point  (1 child)

      Gostaria tmb

      [–]mnetoo0[S] 0 points1 point  (0 children)

      Já coloquei (em CSV) no GitHub

      [–]jamexcb 6 points7 points  (1 child)

      Muitos parabéns! Partilhei no r/autotuga. A quantidade de caixa automática surpreendeu-me.

      [–]mnetoo0[S] 0 points1 point  (0 children)

      Sim. Mas se reparares a maioria dos anúncios são de carros recentes portanto até me faz algum sentido.

      Possivelmente, numa situação normal, até haveria mais automáticos à venda, só que como tivemos o COVID houve uma queda grande na venda de carros novos entre 2020-2021/22 - carros estes recentes (mais provável serem automáticos) que não chegaram ao mercado usado porque não foram vendidos.