Selenium爬取网易新闻动态加载内容 - 获取更多新闻标题
下面是一个使用Selenium来爬取网易新闻的脚本示例,可以处理动态加载的情况:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 设置Chrome浏览器的驱动路径
driver_path = '/path/to/chromedriver'
# 创建一个Chrome浏览器实例
driver = webdriver.Chrome(driver_path)
# 打开网易新闻的网页
url = 'https://news.163.com/'
driver.get(url)
# 等待页面加载完成
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'news_title')))
# 模拟下滑操作加载更多新闻
while True:
# 下滑到页面底部
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
# 等待新闻加载完成
wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'news_title')))
# 获取所有新闻标题
news_titles = driver.find_elements(By.CLASS_NAME, 'news_title')
# 输出新闻标题
for title in news_titles:
print(title.text)
# 判断是否有更多新闻需要加载
try:
more_button = driver.find_element(By.CLASS_NAME, 'load_more_btn')
# 点击加载更多按钮
ActionChains(driver).move_to_element(more_button).click().perform()
except:
# 没有更多新闻需要加载,退出循环
break
# 关闭浏览器
driver.quit()
上述脚本使用了Selenium的WebDriver模块来模拟浏览器操作,通过执行JavaScript代码实现下滑操作,然后等待新闻加载完成,获取新闻标题并输出。当没有更多新闻需要加载时,退出循环并关闭浏览器。
原文地址: https://www.cveoy.top/t/topic/pZb9 著作权归作者所有。请勿转载和采集!