Python爬取网页div内容遇问题:目标div内部内容无法获取
解决动态内容爬取不到的问题
问题原因
你通过requests.get()获取的是服务器返回的静态HTML源码,但目标div的内容是页面加载后通过JavaScript动态渲染生成的,静态源码里并没有这部分内容,所以BeautifulSoup无法提取到。
解决方案
方法1:用Selenium模拟浏览器渲染
Selenium可以模拟真实浏览器加载页面,等待JS执行完成后再获取完整的页面内容。
先安装依赖:
pip install selenium
示例代码:
from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器(需提前安装对应版本的ChromeDriver) driver = webdriver.Chrome() url = "https://gogohd.net/download?id=MTA2MjQ=&token=fU0FFpfwZ8OMWSbHJ11VQg&expires=1677243941" try: driver.get(url) # 等待目标div加载完成,超时10秒 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "content-download")) ) # 获取渲染后的完整页面源码 page_source = driver.page_source soup = BeautifulSoup(page_source, 'html.parser') # 定位目标div并提取内容 target_div = soup.find('div', id='content-download') print(target_div.get_text(strip=True)) finally: # 关闭浏览器 driver.quit()
方法2:直接调用后端API接口
打开浏览器开发者工具(F12),切换到Network标签页,刷新页面后查看XHR/Fetch请求,找到返回剧集数据的接口,直接请求该接口获取数据,这种方式比模拟浏览器更高效。
示例代码(需替换为实际找到的接口信息):
import requests api_url = "你找到的API接口地址" headers = { # 复制浏览器请求头中的关键信息,比如User-Agent、Referer等 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" } response = requests.get(api_url, headers=headers) data = response.json() # 处理返回的JSON数据提取剧集信息 print(data)
内容的提问来源于stack exchange,提问作者Bored Bird
相关产品推荐
相关产品推荐

