You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium爬取Globo搜索页时点击“查看更多”按钮失效的问题求助

Selenium爬取Globo搜索页时点击“查看更多”按钮失效的问题求助

各位大佬好,我最近在写一个爬取Globo搜索结果的脚本,目标是自动点击“Veja mais”按钮加载更多内容,然后提取所有新闻的标题、链接等信息。但现在遇到了一个奇怪的问题:Selenium能正常打开目标页面,却完全无法触发按钮的点击操作。不过如果我去掉点击按钮的循环逻辑,只爬取首页的内容,整个脚本又能完美运行,这说明问题肯定出在Selenium处理按钮点击的部分,而且我确认相关依赖包都已经正确安装了。

下面是包含点击按钮逻辑但失效的完整代码:

from selenium import webdriver
import time
from bs4 import BeautifulSoup
import pandas as pd
import os

lista_noticias = []

navegador = webdriver.Chrome()
url = 'https://www.globo.com/busca/?q=Seguran%C3%A7a%20da%20Informa%C3%A7%C3%A3o'
navegador.get(url)

while True:
    try:
        botao_veja_mais = navegador.find_elements_by_xpath('//*[@id="content"]/div/div/div/a')
        botao_veja_mais.click()
        time.sleep(5)
        print("Clicou em 'Veja mais'.")
    except:
        print("Não há mais botões 'Veja mais'.")
        break

site = BeautifulSoup(navegador.page_source, 'html.parser')
div_noticia = site.find_all('li', attrs={'class':'widget widget--card widget--info'})

for noticia in div_noticia:
    titulo = noticia.find('div', attrs={'class':'widget--info__title product-color'}).text
    link = noticia.find('a')['href']
    site_publicacao = noticia.find('div', attrs={'class':'widget--info__header'}).text
    subtitulo = noticia.find('p', attrs={'class':'widget--info__description'}).text
    data_publicacao = noticia.find('div', attrs={'class': 'widget--info__meta'}).text
    
    lista_noticias.append([titulo, link, site_publicacao, subtitulo, data_publicacao])

noticias = pd.DataFrame(lista_noticias, columns=['titulo', 'link', 'site_publicacao', 'subtitulo', 'data_publicacao'])

nome_arquivo = "noticias.json"
caminho_arquivo = os.path.join(os.path.dirname(__file__), nome_arquivo)
noticias.to_json(caminho_arquivo, orient='records', lines=True)

print("Arquivo JSON salvo:", caminho_arquivo)
navegador.quit()

而只爬取首页能正常运行的代码是这样的:

from selenium import webdriver
import time
from bs4 import BeautifulSoup
import pandas as pd
import os

lista_noticias = []

navegador = webdriver.Chrome()
url = 'https://www.globo.com/busca/?q=Seguran%C3%A7a%20da%20Informa%C3%A7%C3%A3o'
navegador.get(url)

site = BeautifulSoup(navegador.page_source, 'html.parser')
#print(site.prettify())

div_noticia = site.find_all('li', attrs={'class':'widget widget--card widget--info'})

for noticia in div_noticia:
    titulo = noticia.find('div', attrs={'class':'widget--info__title product-color'}).text
    link = noticia.find('a')['href']
    site_publicacao = noticia.find('div', attrs={'class':'widget--info__header'}).text
    subtitulo = noticia.find('p', attrs={'class':'widget--info__description'}).text
    data_publicacao = noticia.find('div', attrs={'class': 'widget--info__meta'}).text
    
    lista_noticias.append([titulo,link,site_publicacao,subtitulo,data_publicacao])

noticias = pd.DataFrame(lista_noticias, columns=['titulo', 'link', 'site_publicacao','subtitulo','data_publicacao'])

nome_arquivo = "noticias.json"
caminho_arquivo = os.path.join(os.path.dirname(__file__), nome_arquivo)
noticias.to_json(caminho_arquivo, orient='records', lines=True)

print("Arquivo JSON salvo:", caminho_arquivo)

有没有大佬能帮忙看看,到底是哪里出问题了?为什么点击按钮的逻辑完全不起作用呢?

备注:内容来源于stack exchange,提问作者Beatriz Macedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:44:41