使用 Selenium 自动化获取 CSDN 博客资源列表
在这篇博客中,我将向大家展示如何使用 Selenium 自动化工具来滚动并获取 CSDN 博客资源列表的全部数据。这篇文章的目标是通过模拟用户的滚动操作,加载所有的资源列表项,并提取它们的信息。
项目准备
首先,我们需要安装一些必备的软件和库:
- Chrome 浏览器:确保你已经安装了最新版的 Chrome 浏览器。
- ChromeDriver:ChromeDriver 是 Chrome 浏览器的驱动程序,你可以从 ChromeDriver 官网 下载与 Chrome 浏览器版本匹配的驱动程序。
- Python 环境:本文使用 Python 3.x。
- Selenium 库:可以通过以下命令安装 Selenium 库:
pip install selenium
代码实现
接下来,让我们来看一段完整的 Python 代码,展示如何使用 Selenium 滚动 CSDN 博客页面,并获取所有的资源列表项。
import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
# 替换为你像查看的博主的id
index_url = 'https://blog.csdn.net/XXXX?type=download'
# 获取当前脚本的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 构建 ChromeDriver 的相对路径
chrome_driver_path = os.path.join(current_dir, 'chromedriver.exe')
# 设置 ChromeDriver 的服务
service = Service(chrome_driver_path)
# 配置 ChromeDriver 的选项以连接到已经运行的 Chrome 实例
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
# 启动 WebDriver 并连接到现有的 Chrome 实例
driver = webdriver.Chrome(service=service, options=chrome_options)
# 获取当前窗口句柄(初始标签页)
main_window = driver.current_window_handle
print(f'Main window handle: {main_window}')
# 打开目标网页
driver.get(index_url)
# 滚动页面,直到加载完所有内容
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# 向下滚动页面
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(1)
driver.execute_script("window.scrollBy(0, -100);")
print('下拉页面....')
# 等待加载新的内容
time.sleep(2) # 适当等待时间,可根据页面加载速度调整
# 计算新的滚动高度并与上次的滚动高度进行比较
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break # 如果高度没有变化,则表示已到页面底部
last_height = new_height
# 查找包含 class "resources-list-box" 的所有元素
resource_boxes = driver.find_elements(By.CLASS_NAME, 'resources-list-box')
# 关闭浏览器
driver.quit()
代码详解
-
设置 ChromeDriver 的路径:首先,我们需要指定 ChromeDriver 的路径。这里我们使用了相对路径,并确保 ChromeDriver 位于当前脚本的目录中。
-
配置 ChromeDriver 选项:我们设置了 ChromeDriver 以连接到已经运行的 Chrome 实例。这对于调试和开发非常有用。
-
启动 WebDriver 并打开目标网页:我们启动了 WebDriver,并打开了指定的 CSDN 博客页面。
-
滚动页面加载所有内容:为了确保加载页面上的所有内容,我们实现了一个循环,滚动页面直到所有内容加载完成。通过比较滚动前后的页面高度,来判断是否已经加载完所有内容。
-
查找资源列表项:在页面加载完成后,我们查找包含资源列表项的所有元素。
-
关闭浏览器:最后,我们关闭浏览器,结束 WebDriver 会话。
结论
通过这篇博客,我们了解了如何使用 Selenium 来自动化滚动 CSDN 博客页面,并获取所有的资源列表项。这种技术可以广泛应用于其他需要滚动加载内容的网页抓取任务中。
希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言讨论。Happy Coding!

2061

被折叠的 条评论
为什么被折叠?



