如何使用 Selenium + BeautifulSoup 抓取动态渲染页面(以知乎为例)_selenium+beautifulsoup
传统爬虫工具如requests
只能抓取静态HTML,遇到大量通过JavaScript动态渲染的页面(如知乎、微博等)时就无能为力。Selenium
通过自动化浏览器,能真实模拟用户浏览过程,配合BeautifulSoup
进行HTML解析,成为抓取动态网页的利器。本文以知乎为例,详细介绍如何使用Selenium抓取动态内容,并用BeautifulSoup提取目标数据。
一、技术选型及原理
- Selenium:自动化浏览器操作,执行JavaScript加载内容,等待页面元素渲染完成。
- BeautifulSoup:对Selenium获取的完整HTML源码进行结构化解析,方便提取关键信息。
二、环境准备
- 安装Python依赖:
pip install selenium beautifulsoup4
-
下载对应浏览器驱动(以Chrome为例):
- 访问ChromeDriver下载页面
- 确保版本与Chrome浏览器匹配
- 将驱动放入系统PATH或指定路径
三、知乎动态内容爬取流程解析
知乎首页或问题页的大量内容是动态通过JS加载的。直接requests.get()
拿到的HTML是初始骨架,内容空缺。用Selenium打开页面后,浏览器会自动运行JS,内容变为完整。然后用page_source
获取完整HTML,再用BeautifulSoup解析提取。
四、实战示例:爬取知乎某个问题的回答列表
from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver