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
相关产品推荐
相关产品推荐

