You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Requests爬取网页仅获部分内容,无法提取章节数求助

问题分析与解决办法

核心原因

你遇到的问题是因为目标网站的内容是JavaScript动态渲染的:

  • requests库只能获取服务器直接返回的静态HTML源码,而页面里的漫画章节信息是浏览器加载页面后,通过JavaScript动态生成并插入到#manga-mobile-app容器中的。
  • 所以你用requests拿到的页面里,这个容器自然是空的,找不到对应的子元素。

解决方法

方法一:用浏览器自动化工具模拟加载(推荐)

可以用Selenium或Playwright这类工具,模拟真实浏览器的加载过程,等JS渲染完成后再获取页面内容。

以Selenium为例,代码示例:

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
from bs4 import BeautifulSoup

url = "https://mangaabyss.com/read/the-god-of-pro-wrestling/"

# 初始化浏览器(需提前安装对应浏览器的驱动,如ChromeDriver)
driver = webdriver.Chrome()
driver.get(url)

# 等待目标元素加载完成,超时10秒
try:
    # 等待章节数元素出现
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "#manga-mobile-app > div > div.comic-info-component > div.page-normal.with-margin > div.comic-deatil-box.tab-content.a-move-in-right > div.comic-episodes > div.episode-header.f-clear > div.f-left > span"))
    )
    # 获取渲染后的页面源码
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')
    # 提取章节数
    chapter_count = soup.select_one("#manga-mobile-app > div > div.comic-info-component > div.page-normal.with-margin > div.comic-deatil-box.tab-content.a-move-in-right > div.comic-episodes > div.episode-header.f-clear > div.f-left > span").text
    print(chapter_count)
finally:
    driver.quit()

方法二:抓包获取API接口

打开浏览器开发者工具(F12),切换到Network标签,刷新页面,筛选XHR/fetch类型的请求,查找直接返回章节信息的API接口。如果能找到,直接用requests请求该接口,效率比模拟浏览器更高。

比如,你可以在请求列表中搜索包含章节相关关键词的条目,找到对应的API地址后,构造请求获取数据即可。


内容的提问来源于stack exchange,提问作者MCUxDaredevil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:27:33