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

使用Beautiful Soup爬取Naver漫画页面仅获少量内容,求解决方案

问题分析与解决

为什么只拿到少量内容?

requests.get()只能获取服务器返回的初始静态HTML,而Naver漫画页面的核心内容(比如漫画列表、更新信息)是通过JavaScript在浏览器端动态渲染生成的。这些动态内容不会出现在requests获取的响应文本里,所以BeautifulSoup自然解析不到完整页面。

解决方案

1. 使用浏览器自动化工具(推荐)

这类工具可模拟真实浏览器的渲染流程,等待JavaScript执行完成后再获取完整页面,常用的有Selenium和Playwright:

Selenium实现示例

先安装依赖:

pip install selenium

下载与你的Chrome版本匹配的ChromeDriver,代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
import time

# 初始化驱动,替换为你的ChromeDriver路径
service = Service('/path/to/chromedriver')
driver = webdriver.Chrome(service=service)

driver.get('https://comic.naver.com/webtoon')
# 等待页面加载完成,可根据网络情况调整时长
time.sleep(3)

# 获取完整渲染后的HTML
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'lxml').prettify()
print(soup)

driver.quit()

Playwright实现示例

Playwright无需手动下载驱动,配置更简洁:
先安装依赖:

pip install playwright
playwright install

代码如下:

from playwright.sync_api import sync_playwright
from bs4 import BeautifulSoup

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto('https://comic.naver.com/webtoon')
    # 等待网络请求稳定,确保内容加载完成
    page.wait_for_load_state('networkidle')
    
    page_source = page.content()
    soup = BeautifulSoup(page_source, 'lxml').prettify()
    print(soup)
    
    browser.close()

2. 直接调用API接口

通过浏览器开发者工具(F12)抓包,找到Naver漫画页面获取数据的XHR/Fetch接口,直接请求接口获取结构化数据,这种方式效率更高,无需等待页面渲染。

关于Beautiful Soup的说明

Beautiful Soup本身完全可以处理完整的HTML内容,它只是一个HTML/XML解析库,问题出在你获取的HTML本身不完整,而非Beautiful Soup的能力限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:37:34