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

使用bs4与requests爬取网页找不到指定div、返回HTML不完整如何解决

问题原因与解决思路

返回None的核心原因分为两类:一是网站基础反爬策略拦截了无标识的请求,导致你拿到的页面内容不完整;二是目标div属于前端JS动态渲染生成的元素,requests直接请求拿到的静态HTML源代码中不存在该元素。

排查与解决步骤

  • 优先排查反爬拦截问题
    多数网站会拒绝没有携带User-Agent的请求,返回异常页面或者截断内容,你可以先修改请求头模拟浏览器发起请求,同时把拿到的页面存到本地确认内容是否完整:
    import requests
    from bs4 import BeautifulSoup
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    URL = "https://www.element14.com/community/community/design-challenges/in-the-air-design-challenge/blog/2014/10/26/firecracker-analyzer-index"            
    page = requests.get(URL, headers=headers)
    # 保存页面到本地验证内容
    with open("test.html", "wb") as f:
        f.write(page.content)
    soup = BeautifulSoup(page.content, "lxml")
    print(soup.find('div', {'class': 'j-comment-wrapper'}))
    
    打开本地保存的test.html,如果还是找不到目标div,说明该元素是动态加载的,可选择以下两种方案解决。
  • 方案1:使用动态渲染工具提取
    采用支持执行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
    
    # 需提前配置对应浏览器的驱动,此处以Chrome为例
    driver = webdriver.Chrome()
    URL = "https://www.element14.com/community/community/design-challenges/in-the-air-design-challenge/blog/2014/10/26/firecracker-analyzer-index"
    driver.get(URL)
    # 最多等待10秒,直到目标div加载完成
    comment_div = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "j-comment-wrapper"))
    )
    print(comment_div.get_attribute("outerHTML"))
    driver.quit()
    
  • 方案2:抓包调用数据接口(效率更高)
    打开浏览器F12开发者工具,切换到「网络」面板,刷新页面后筛选「Fetch/XHR」类型的请求,找到返回评论数据的后端接口,直接请求该接口就能拿到结构化的JSON数据,无需解析HTML,运行效率远高于页面渲染方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:36:05