Estou tentando raspar um site. Tentei usar dois métodos, mas ambos não me fornecem o código-fonte completo do site que estou procurando. Estou tentando extrair os títulos das notícias do URL do site fornecido abaixo.
URL: "https://www.todayonline.com/"
Esses são os dois métodos que tentei, mas falhei.
tdy_url = "https://www.todayonline.com/"
page = requests.get(tdy_url).text
soup = BeautifulSoup(page)
soup # Returns me a HTML with javascript text
soup.find_all('h3')
### Returns me empty list []
tdy_url = "https://www.todayonline.com/"
options = Options()
options.headless = True
driver = webdriver.Chrome("chromedriver",options=options)
driver.get(tdy_url)
time.sleep(10)
html = driver.page_source
soup = BeautifulSoup(html)
soup.find_all('h3')
### Returns me only less than 1/4 of the 'h3' tags found in the original page source
Por favor ajude. Eu tentei vasculhar outros sites de notícias e é muito mais fácil. Obrigado.
Você pode acessar os dados via API (verifique a guia Rede): 
Por exemplo,
import requests
url = "https://www.todayonline.com/api/v3/news_feed/7"
data = requests.get(url).json()
Existem diferentes maneiras de reunir o conteúdo de uma página da web que contém Javascript.
seleniumo driver da web do FirefoxphantomJSrequestsbiblioteca pythonVocê tem que fazer sua pesquisa primeiro
Vou sugerir a você uma abordagem bastante simples,
import requests
from bs4 import BeautifulSoup as bs
page = requests.get('https://www.todayonline.com/googlenews.xml').content
soup = bs(page)
news = [i.text for i in soup.find_all('news:title')]
print(news)
resultado
['DBS named world’s best bank by New York-based financial publication',
'Russia has very serious questions to answer on Navalny - UK',
"Exclusive: 90% of China's Sinovac employees, families took coronavirus vaccine - CEO",
'Three militants killed after fatal attack on policeman in Tunisia',
.....]
Além disso, você pode verificar a página XML para obter mais informações, se necessário.
PS Sempre verifique a conformidade antes de descartar qualquer site :)
Os dados de notícias no site que você está tentando copiar são obtidos do servidor usando JavaScript (isso é chamado de XHR - XMLHttpRequest ). Isso está acontecendo dinamicamente, enquanto a página está carregando ou sendo rolada. portanto, esses dados não são retornados dentro da página retornada pelo servidor.
No primeiro exemplo, você está recebendo apenas a página retornada pelo servidor - sem as notícias, mas com o JS que deve obtê-las. Nem as solicitações nem o BeautifulSoup podem executar JS.
No entanto, você pode tentar reproduzir solicitações que estão obtendo títulos de notícias do servidor com solicitações Python. Execute as seguintes etapas:

Copie o link de solicitação (clique com o botão direito -> Copiar -> Copiar link) e passe-o para requests.get(...).
Saia .json()do pedido. Ele retornará um dict que é fácil de trabalhar. Para entender melhor a estrutura do dicionário, eu recomendaria usar em pprintvez da impressão simples. Observe que você deve fazer from pprint import pprintantes de usá-lo.
Aqui está um exemplo do código que obtém os títulos das principais notícias da página:
import requests
nodes = requests.get("https://www.todayonline.com/api/v3/news_feed/7")\
.json()["nodes"]
for node in nodes:
print(node["node"]["title"])
Se você quiser raspar um grupo de notícias sob legenda, você precisa alterar o número após news_feed/na URL de solicitação (para obtê-lo, você só precisa filtrar as solicitações por "news_feed" no DevTools e rolar a página de notícias para baixo).
Às vezes, os sites têm proteção contra bots (embora o site que você está tentando copiar não tenha). Nesses casos, você também pode precisar executar essas etapas .
Jana Duggar foi aberta sobre sua busca pelo amor. Aqui está tudo o que ela disse sobre o assunto e sua janela de cinco anos para o casamento.
O astro de 'Outlander', Sam Heughan, revelou recentemente o que vai levar do set para relembrar Jamie Fraser, o papel que o tornou uma estrela.
'She Loves You' foi escrita em uma hora, gravada em um dia, e foi a música dos Beatles com uma de suas melhores apresentações de sua carreira.
Dolly Parton e sua avó Bessie tiveram um relacionamento especial. Vovó Parton estava muito doente, mas isso não impediu Dolly de pregar uma peça nela.
Você pode achar que o carvalho ou a nogueira são madeiras resistentes, mas quando se trata da madeira mais dura do mundo, elas nem chegam perto.
O oceano é repleto de beleza, mas também esconde algumas das criaturas marinhas mais assustadoras do planeta. Muitos desses animais espreitam nas profundezas do oceano, no mundo escuro e de alta pressão do fundo do mar.
Se você está enfrentando criaturas hostis ou se preparando para cenários PvP, conhecer os melhores encantamentos de espada no Minecraft pode te dar uma grande vantagem. Encantar espadas permite causar mais dano, aumentar a quantidade de itens obtidos de criaturas e prolongar a durabilidade da sua espada.
Quando as pessoas falam sobre países socialistas, geralmente imaginam o controle total do governo e a ausência de propriedade privada. Mas, na prática, as economias socialistas variam muito.
“Children” traz uma participação especial de grande nome e algumas notícias devastadoras
Este RAV4 está em excelentes condições e está preparado para um jogo de cadeiras musicais.
Imagens de drone capturaram bombeiros parecendo lutar para apagar o incêndio.
Eyes of Wakanda está diretamente relacionado ao MCU, além de atualizações sobre X-Men '97, What If..., Demolidor e muito mais.
O anel de noivado de Kate Middleton pertenceu à Princesa Diana antes do Príncipe William pedi-la em casamento. Descubra tudo o que há para saber sobre a peça histórica aqui.
John Cleese se casou com sua esposa, Jennifer Wade, em 2012. Aqui está tudo o que você precisa saber sobre a esposa de John Cleese, Jennifer Wade.
Patton Oswalt se casou com sua esposa, a também atriz Meredith Salenger, em 2017. Aqui está tudo o que você precisa saber sobre a esposa de Patton Oswalt, Meredith Salenger.
Mena Suvari é casada com o marido Michael Hope desde 2018. Aqui está tudo o que você precisa saber sobre o marido de Mena Suvari.
Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..
Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.
No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.
Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.