Como fazer web scraping com python em sites dinâmicos // O site muda toda hora
ฝัง
- เผยแพร่เมื่อ 7 ก.ย. 2024
- Web scraping é uma coleta de dados da web, de sites, onde usamos scripts e programas para coletar ou raspar as informações destes sites e que poderão ser usadas para futuras análises.
💊Quer explodir sua mente!: encurtador.com.br/fhDT8
Para nosso video vamos fazer um web scraping em python comparar preços de cadeiras gamers, coletando as informação da web e depois vamos salvar as informações em um arquivo csv usando python pandas
Nosso web scraping python utilizará a linguagem python além de bibliotecas poderosas de extração de informação como beautiful soup e requests e pandas vamos percorrer diversas páginas para encontrar as informações que desejamos.
📑Código Fonte:
github.com/fab...
📔Livro: Web Scraping com Python: Coletando Mais Dados da web Moderna
amzn.to/2RZ2weB
🔦Iluminação
amzn.to/3xYjOJn
📸Camera logitech
amzn.to/3tyvWNC
#webscraping #python #raspagemdedados
Excelente vídeo com exemplo da vida real. Estou cansado de ver vídeo no YT e em cursos da galera mostrando exemplos direcionados... sei que webscaping é algo complicado de ficar fazendo ou mostrando por questões legais. Mas o conteúdo é educacional, ninguém em sã consciência irá fazer 5 milhões de requisições num treinamento. Obrigado por compartilhar seus conhecimentos conosco. Ganho um inscrito.
Obrigado
Fala Fabrício. Show o video. Curti! Uma biblioteca que acho bem legal é o Scrapy.
Fala Pedro. Obrigado. Sim , Scrapy é legal, mas so usei 1x
Top demais, não conhecia esse beautiful soup mas pelo que entendi, diferente do Selenium ele não precisa de um driver que avisa pro chrome que está sendo automatizado
# Excelente tutorial, foi o melhor que encontrei depois de dias de busca na internet! Parabéns pela didática e obrigado pela informação! Ganhou mais um seguidor!!
Obrigado
Vídeo muito bom! Poderia falar um pouco sobre os problemas legais do web scraping? Gosto muito de fazer, mas sempre fico com medo de ter algum problema, mesmo fazendo poucas requisições por minuto
Sensacional,..
Seu conteúdo gratuito bateu d+++ num determinado conteúdo pago q tem aqui no YT,..
Obrigado Emerson
Ótimo vídeo, parabéns.
Sugestão para o próximo: webscraping com método post, de algum site que precise selecionar filtros e depois exportar em csv ou xlsx.. obs: sem utilizar o selenium
Ótima sugestão! Mas usando o Selenium 😉
Fala Fabrício muito show cara! Poxa tô numa labuta aqui meu amigo, estou tentando agrupar dados históricos de notícias de ações mas tá difícil cara, não acho uma fonte que consiga puxar uma quantidade significativa de dados. Seria muito legal com vídeo com esse tema de como criar um dataset com as notícias de ações para Sentimental analisys
Olá Matheus, legal,gostei da ideia vou tentar pesquisar e se conseguir faço um vídeo sobre.
Pro pessoal que está recebendo o erro → AttributeError: 'NoneType' object has no attribute 'get_text'. Pode ser necessário alterar o header da request (variável "headers").
como?
falou falou e nao falou nada
Oh, o YT deletou meu comentário, mas procurem por "How Headers Are Used to Block Web Scrapers and How to Fix It" (é o título de uma matéria de um site mostrando alguns exemplos) ou algo do tipo, os primeiros sites devem conter variações e explicações do que pode ser adicionado no header para simular outro dispositivo.
O correto é 'User-Agent' vê se é isso, no meu caso era
Excelente os vídeos... me ajudou em muitas coisas....
Mas um problema que não consegui resolver é que o campo que eu quero está com a tag dentro com um document.write("
Muito obrigado mano, te achei parecido com o Thomas Shelby mas isso é so um detalhe hahaha bela aula, Tmjj !!!
cara acabei de conseguir fazer aqui seguindo seus passos e demorei cerca de 5horas para ter o mesmo resultado que o seu, eu tive varios problemas como formatação de string outros relacionados a criaçao da planilha, mais entre mortos e feridos ficou o conhecimento adquirido graças a voçe, ja posso colocar la no meu linkedin que sei trabalhar Com webscraping, agora é aprofundar e fazer outros screpys em outros site, vou tentar manda por email agora essa planilha, que venham mais 5h pela frente kkkk
Que bom conseguiu Efraim. É assim mesmo,a gente demora mas não para até conseguir.
Ajudou muito, eu estava penando para achar laço e estava apanhando ainda mais por está usando em um site de chamado.
Muito Bom Fabricio, gracas a seu outro video consgui fazer um web scraping. Gastei ums 2 dias, mas o codigo rodou. Não sou programador, mas me lancei nesse desafio de aprender uma linguagem esse ano. Valeu, sucesso.
Que bom Jonathan
surreal a forma que você entrega o conteúdo, muito obrigado, facilitou muito
Um grande professor!
Que bom que gostou
Cara, mais 1 inscrito! Deu certinho aqui.. só agradeço o compartilhamento desse conhecimento. Deus abençoe!
Que bom que ajudou
Fantástico, estava batendo cabeça demais pra resolver uns exercícios aqui ajudou demais!!
Parabéns to estudando esse tema pra fazer uns frela na upwork porém ainda tenho medo que fazer mas valeu to aprendendo bastante com seu material
Bons estudos!
Boa tarde, tudo bem? Adorei o conteúdo do vídeo, parabéns! Eu fiquei com uma dúvida somente no final. eu consigo exportar as informações de forma organizada para ele cair diretamente no Google sheets?
Parabéns pela didática e conteúdo. Mais um inscrito!
Obrigado
Boa noite. Também sou iniciante, mas consegui aprender facilmente . Parabéns pela excelente didática.
Que bom que ajudou
Top de mais , muito obrigado , teria como fazer um video buscando precos de passagem aereas ? seria pedir muito ? abracos e sucesso
Boa sugestão!
A única coisa que eu mudaria seria colocar um regex do preço removendo o R$, eu não sei se o beautiful soup consegue trazer um array igual os find_elements do Selenium mas se sim daria pra trazer só pelo nome da classe pai daí não teria que lidar com os ids das filhas
muito bom, Sou teu fan agora em !!!!!
Poderia criar um video usando o scrapy!!!
Boa sugestão!
Thanks so much for your thoughtful and detailed videos! On to the soft!
Até agora tudo certinho, aula maravilhosa
Excelente! Obrigada por compartilhar seus conhecimentos de forma tão clara!
Eu q agradeço por ter assistido.
Top demais! Parabéns pela vídeo aula, super didático!
Obrigados
Salvou a minha vida cara, parabéns pelo conteúdo !!!!
Obrigado
Show de bola Fabrício ! Tô inscrito
Valeu obrigado
Deu certo.... testei em outro site com paginação diferente ... mas funcionou... obrigado
Que bom que ajudou
Parabéns! Ótimo conteúdo, excelente iniciativa
Resolvi testar, criei o Código com o mesmo exemplo, conferi linha a linha a sintaxe.
mas ocorre um erro.
na linha site = requests.get(url, headers=headers)
name 'headers' is not defined. Did you mean: 'headers'?
pensei em declarar essa variável, mas não funcionou.
Poderia dar uma luz sobre este erro?
Show de bola!!! Parabéns pela excelente didática!
Obrigado
Vale dois "joinhas", obrigado pelo vídeo!
Obrigado
amigo muito bom seu vídeo 👏👏.... faz webscrapy em site feito em javascript.😊😊
O rei do WebScraping👏👏👏👏
😁
muito obrigado pôr compartilhar seu conhecimento com o público.
😉👍
depois de fazer web scraping com selenium e se arrepender aqui estou eu transformando meu codigo q usa selenium pra bs4
Conteúdo sensacional. Muito Obrigado!!
muito bom ! continue postando! obrigado
Pra achar a quantidade era melhor
Split(' ')[0]
top amigo muito agradecido pelo conhecimento compartilhado
Eu q agradeço
Cara, que video fantástico!!
Que bom que gostou
Ficou muito bom ! Parabéns.
Obrigado
excelente tutorial, parabéns 👏
Vídeo top, obrigado!
Estou começando hoje a pesquisar sobre web scraping porque quero fazer uma aplicação. Me deparei com uma dúvida que no vídeo é resolvido alterando o valor da página na URL. No meu caso eu estou tentando percorrer a lista e acessar a página com informações do produto, nesse caso eu teria que clicar em cada elemento para criar uma lista das URLs de cada produto? Eu também preciso "ficar de olho" em cada página desses produtos, porque as informações deles são atualizadas de segundos em segundos, alguma ideia de como fazer isso? Estou pesquisando algum caso parecido (acredito que eu encontre em algum vídeo de bolsa de valores, etc), mas se tiver alguma técnica que já saiba que possa compartilhar para eu pesquisar já me ajuda muito!
(Obs.: caso minha dúvida seja idiota é porque eu não tenho experiência com desenvolvimento web, muito menos python kkk aprendendo tudo junto)
Ótima aula!
Parabéns pelo vídeo, Fabricio você tem decorado em mente cada função dessas biblioteca ? Eu sinceramente não consigo codificar sozinho sem ver algum video, tu tem alguma dica para melhorar isso ?
Oi Filipe, tenho uma ideia pois ja usei, mas eu codifico com a documentação de um lado e o stackoverflow do outro 😉
Sou iniciante, mas consegui aprender alguns conceitos importantes. Mas gostaria de elevar o nível do código, mas não sei como. Gostaria de permitir o usuário entrar com uma busca de parte do texto, depois procurar no DF as informações compatíveis com o texto buscado e por fim, retornar o menor valor da busca dele.
Nem sei como começar isso!!!!
Muito bom. Grato!
Eu que agradeço
cara o video em si muito bom mas voce faz uma explicação muito rapida onde algumas partes sempre tenho que voltar no video para poder acompanhar
teria como dar um scrap em todas as fotos no site da oboticario? todos os produtos
Cara estou tentando fazer isso só que está dentro de um
Teria como eu fazer dessa forma ou tem outra solução?
neste caso do exemplo o site tem este elemento que mostra a quantidade de produtos, o que facilitou na lógica para encontrar a qtde de páginas. E nos casos em que o site gera centenas de páginas mas nao tem este elemento indicando a qtde de itens?
Quando o site não tem a quantidade de itens nem de itens por pagina, como a paginação?
+1 inscrito, like
Aula excelente irmão! Eu tenho uma dúvida.. eu conseguiria fazer esse mesmo procedimento no mercado livre ? Mas aí os dados que eu gostaria de extrair seria de um produto específico, e iriam além do título e do preço. Eu gostaria de extrair título, preço, a quantidade de vendas que o anuncio tem, o estoque de cada vendedor, a reputação de cada vendedor, o nome do vendedor e o tipo de anúncio (se ele é clássico, Premium, clássico com frete grátis, Premium com frete grátis...). Para esses dados além do título e do preço, acredito eu que o Pyton além de analisar a capa de cada anúncio, ele teria que entar em anúncio por anúncio, e verificar essas condições.
Consegue , e só ir buscando as informações que vc quiser
incredible possibilities to those who master it. I am almost done with my first track, but there is so much more to discover and learn. TNice tutorials
Vídeo TOP!
Obrigado 😃
a cola estar do lado kkk
mas ficou bem
Olá tive o mesmo problema fiz a video aula na hora de rodar apareceu esse erro :
preco = produto.find('span', class_=re.compile('priceCard')).get_text().strip()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get_text'
procurei Stack OverFlow nada, traz os nomes do produto cadeira mas os preços gera erro, mesmo assim agradeço excelente didática parabéns !!!!!
Dá uma olhada no nome da pagina pois acho que mudou
Boa tarde galera.
Fui executar o programa igual o professor no momento 9:29 do vídeo.
Porém, o meu código retornou o seguinte erro:
Traceback (most recent call last):
File "C:\Users\marce\PycharmProjects\webscrapping\scrapping.py", line 13, in
qtd_itens = soup.find('div', id='listingCount').get_text().strip()
AttributeError: 'NoneType' object has no attribute 'get_text'
O que devo fazer para soluciona-lo?
Oi Marcelo quer dizer que ele não encontrou o elemento que vc esta procurando no caos o listingcount
Muito obrigado pelo retorno.
Neste caso, como eu faço pra conseguir retornar o valor que está na div que tem o id listcount?
Imprimi a variável soup e o HTML dentro dela tá menor.
O meu também deu esse erro e não achei nada para solucionar
@@viniciusrubia3656 Inspeciona novamente o html o id ou a div pode ter mudado de nome
Fala marcelo,
Provavelmente isso aconteceu pq na hr do computador acessar o site foi bloqueado. Experimente dar um print na variável "soup" do codigo do video. e veja se o terminal mostra a estrutura html ou uma linha de texto. se mostrar um linha de texto, o site esta bloqueando seu acesso.
Tente realizar a tarefa em outro site, atualizar a versao do navegador ou trocar de navegador.
Muito bom. Como eu consigo buscar uma informação que fica atualizando a cada segundo?
Ex: Quero buscar os preços das ações do ibovespa e passar para o excel, mas em tempo real para colocar essas informações num dashboard.
Consegue me dar uma ajuda?
Pode fazer isso diretamente usando a Api do yfinance, neste caso não precisa de webscrapping. Da uma olhada nos vídeos sobre mercado financeiro
muito bom. adorei
teria como criar um jeito de ele ficar analisando produtos que entram em promoção em sites como amazon e magazine luiza para eu enviar em lista pra clientes e assim ganhar dinheiro como afiliado?
Tem sim. Alias o primeiro vídeo da play list de web scraping fala exatamente sobre isso
Fera demais me ajudou muito
Obrigado
linda didática!
Obrigado
Estou fazendo o mesmo código em outro site. No looping, a url está retornando as demais páginas, mas o conteúdo nome, preço e etc está sendo da primeira pagina apenas.
Parabens pelo vídeo.... uma dúvida,.. eu conseguiria fazer a parte do web scraping com o selenium apenas? vi outros vídeos uma junção do BS com selenium, e não consigo entender pq usam os dois. se puder me esclarecer, agradeço desde já
Ate pode fazer com o selenium. Mas o bs tem alguns métodos que são maia fáceis de usar
Seguindo esse modelo, como eu faria pra conseguir fazer essa análise e por exemplo ele conseguir pegar o link apenas de produtos que tenham o texto cashback e o valor?
Vc teria que verificar a tag onde esta o texto cashback, e trazer isso em uma variável e se está variável estiver vazia pular para o outro produto, se estiver preenchida popular com os dados do produto.
Muito bom. :D
Opa Fabrício e amigos, seria possível pegar fotos + descrição + comentário, com todos esses arquivos já ensinados no vídeo?
Sim, vice precisa descobrir as tags onde estão o q vc quer buscar e se tem um padrão q possa ser usado aa expressão regular e seguir o q fizemos no video
@@Codifike top, muito obrigado pelo retorno de verdade
Oláa, preciso muuuito de ajuda! Tenho que fazer o levantamento das lojas da drogaria raia mas quando coloco
qtd_itens = soup.find('p', class = "count-containe inlin").get_text().strip()
aparece : AttributeError Traceback (most recent call last)
in ()
1 #'pager inline'
----> 2 qtd_itens = soup.find('p', {"class": "count-containe inline"}).get_text().strip()
AttributeError: 'NoneType' object has no attribute 'get_text'
Isso acontece quando ele não encontra o nome da classe que está procurando e por isso ele não consegue extrair o texto de um valor vazio no caso o NoneType.
achei uma outra solução tenta ai:
tag = soup.find('p', class = "count-containe inlin")
qtd_itens = tag.text
@@jacquesddoug9880 não consigo desta maneira
Muito top!!
Em alguns sites que executa alguns elementos em tempo de execução com o ajax, essa forma não vai funcionar muito bem, poderia fazer um vídeo explicando sobre essas paginas que executam uma parte do html em ajax , eu contornei esse problema com o selenium para abrir o site antes de fazer o request, mas ficou um pouco lento o programa, teria outra solução?
Vou tentar ver se vejo alguma solução para isso
@@Codifike show, já aproveito para agradecer, pois aprendi muitas coisas em python assistindo seus video
Tenta obter os dados via endpoint, da uma olhada na aba network do devtools
Eu quero fazer um projeto onde cada anuncio representa uma venda, existe uma forma onde consigo automatizar a informação de venda?
Já tem algum video que ensine ele a jogar isso de forma automatica no google sheets "planilha online"
Não, mas gostei da dica. Vou pesquisar
Pra mim já falhei no tutorial aos 1:05 , pq deu "Conda executable path is empty"
Oi Henrique , instalou o anaconda na sua máquina?
Olá, excelente vídeo!
Parabéns, já deixei aquele like e sou inscrito, deu um erro para mim aqui, result = qtd.get_text(separator=' ', strip=True)
AttributeError: 'NoneType' object has no attribute 'get_text', este erro aqui, porém já instalei a biblioteca do bs4, e mesmo que eu tire os atributos do get_text, e coloque um .strip após os parênteses, o erro persiste, saberia me informar o que pode ser? Obrigadoo.
Isso acontece quando ele não encontra o elemento que vc mando procurar , provavelmente o que está na variável qtd
@@Codifike Obrigado
Como referenciar uma url para um site que é preciso logar?
Ao tentar coletar os dados de uma classe, da tela inicial de login e não da tela atual
Show hein!, como eu poderia fazer pra ele me printar o link de cada anuncio junto com o nome e o preço?
Teria q pesquisar mas acho q tem um comando q faz isso
De passagem aerea ia ser massa.
sempre da esse erro "ImportError: cannot import name 'BeautifulSoup' from 'bs4'"
ja tentei de tudo até alterar pra BeautifulSoup4
ele fala que o erro esta em:
from bs4 import BeautifulSoup
Super Obrigado!!!!!!!!!!!
Disponha!
como eu faço esse calculo quando a pagina nao tem o valor de paginas a amostra, só tem la em baixo um mostrar mais que quando clica carrega mais itens sem atualizar a pagina.
Eu consigo a quantidade de pagina vendo pelas propriedades onde fica o mostrar mais, como faço pra colocar esse valor que esta na tag mostrar mais pra deixar automatizada a contagem de paginas? min 11:10
Neste caso , acredito q a informação já esteja pronta em um arquivo separado. Para saber como fazer assista esse meu vídeo th-cam.com/video/myHHRAXxhmk/w-d-xo.html
Cara, gostei ...
Que bom
e como faz uma busca no site todo não só na parte de cadeiras
O web scraping possibilita baixar arquivo vetorial como mapas, lotes de quadras etc de um site de intranet?
eu no caso estou precisando raspar o numero atual da roleta simultaneamente assim que muda em cada rodada. este código que vc fez da pra fazer esta raspagem em tempo real e enviar pro meu BOT ?
estou com meu codigo todo certo porém eu fiz em uma pagina que não precisava mudar de página, fiz tudo certo, mas não volta nenhum resultado para mim, alguém pd me me ajudar?
A página que estou extraindo carrega os itens conforme vai rolando a página, qual seria a solução?
Tem um vídeo na playlist de web scraping que fala exatamente disto. Dá uma olhada lá 👍
to com problemas com a mesma coisa que você, estou tentando coletar dados da olx
Thanks, man
Alguma aula de como acessar dropmenus com Selenium?
Ainda não
Vc da aula on LINE de um determinado assunto?
Olá, até o momento não
@@Codifike queria aprender a criar uma automação em uma roleta mas n encontro nada sobre o assunto queria criar um robô que ficasse recebendo as informações dos números e quando indentificasse o padrão ele jogaria mas tá difícil.
@@micheltutoriaismidi amigo esquece isso, roleta de cassino online são baseadas em algoritmos que retornam números bastante aleatórios , estuda sobre automação de tarefas repetitivas, scrapy, tratamento de dados, interface, redes, criptografia ou qualquer outra coisa que tem bem mais futuro
Top mano
Obrigado Michel
cara tô tentando fazer isso no site do vivalocal. Pra listar alguns números de whatsapp que ficam em botões. Mas não consigo. Algum vídeo explicando?? O formato da página é diferente desse exemplo que vc usou
Precisa aprender a ler html porque a mesma informação fica de formas diferentes em sites
Show
Eu tô estudando como pesquisar um cnpj em um site e o resultado jogar os contatos pra planilha… mas não faço ideia de como fazer isso
tem uma api q faz isso
@@joaomaykomribeiro4258 Vou pesquisar sobre, obrigado
o site de buscas google utiliza desta ferramenta ?
opa eai, to querendo fazer isso usando a biblioteca do playwright, é o mesmo processo de requests? ou muda alguma coisa, se puder responder agradeço ❤️
por exemplo, faço login no site, ai na entrada dele tem assim "permitir notificações", porém o codigo xpath dela muda toda hora, por exemplo:
('xpath=//*[@id="mount_0_0_jH"]/div/div[1]/div/div[2]/div/div/div[1]/div/div[2]/div/div/div/div/div/div/div/div[3]/button[2]').click()
('xpath=//*[@id="mount_0_0_Bi"]/div/div[1]/div/div[2]/div/div/div[1]/div/div[2]/div/div/div/div/div/div/div/div[3]/button[2]')
ele muda só uma parte, mas não consigo fazer o mesmo jeito q vc fez ali, será q tem outro jeito de conseguir?
Não conheço essa lib