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

使用BeautifulSoup无法提取网页中的Hello World文本,该如何解决?

如何用BeautifulSoup抓取页面中的"Hello World"文本

问题根源

你通过requests获取的是服务器返回的静态HTML,但目标页面里的"Hello World"大概率是通过JavaScript动态渲染生成的,所以静态源码里找不到;也有可能是你没定位到存放该文本的具体元素。

解决方案1:处理动态加载内容(用Selenium)

如果文本是动态渲染的,需要模拟浏览器完整加载页面:

  1. 先安装依赖:
pip install selenium
  1. 下载对应浏览器的驱动(比如ChromeDriver),确保版本和你的浏览器匹配
  2. 编写代码:
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time

# 替换为你的ChromeDriver实际路径
driver_service = Service("path/to/your/chromedriver")
driver = webdriver.Chrome(service=driver_service)

url = "https://www.w3schools.com/python/default.asp"
driver.get(url)
# 等待页面加载完成(可根据实际情况调整等待时间)
time.sleep(2)

# 获取渲染后的完整页面源码
page_html = driver.page_source
soup = BeautifulSoup(page_html, "html.parser")

# 定位包含"Hello World"的代码块(以页面实际元素为准,这里用常见的class示例)
code_blocks = soup.find_all("div", class_="w3-code")
for block in code_blocks:
    if "Hello World" in block.text:
        print(block.text.strip())

driver.quit()

解决方案2:直接定位静态HTML中的元素

如果目标文本其实存在于静态源码中,只是你没找到,可以通过浏览器开发者工具定位:

  1. 打开目标页面,右键选择“检查”打开开发者工具
  2. 搜索"Hello World",找到它所在的HTML标签及属性
  3. 用BeautifulSoup精准定位:
from bs4 import BeautifulSoup
import requests

url = "https://www.w3schools.com/python/default.asp"

res = requests.get(url)
res.encoding = "utf-8"
    
soup = BeautifulSoup(res.text, "html.parser")

# 根据实际定位到的元素修改选择器,这里用文本匹配示例
target_text = soup.find(string=lambda t: t and "Hello World" in t)
if target_text:
    print(target_text.strip())
else:
    print("未找到目标文本,推测为动态加载内容")

关键提示

  • 先确认静态源码是否包含目标文本:在浏览器开发者工具的“网络”标签中,查看该页面的原始HTML响应,搜索"Hello World"。如果搜不到,就必须用Selenium这类工具处理动态内容。
  • 使用Selenium时,驱动版本必须和浏览器版本一致,否则会出现兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:46:46