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

Python网页爬取:如何将div内容转为纯文本并解决NoneType错误

解决爬取class为element的div中价格文本的问题

核心问题分析

  1. 使用__str__得到方法绑定信息:大概率是错误调用了方法(比如写了price_div.__str__而非price_div.__str__()或str(price_div)),但这种方式会返回整个元素的HTML字符串,并非纯价格文本。
  2. .text触发AttributeError: 'NoneType' object has no attribute 'text':说明find()/find_all()没有找到目标div元素,返回了None。

分步解决方案

1. 基础爬取代码(静态网页)

先确保请求成功且元素定位正确:

import requests
from bs4 import BeautifulSoup

# 替换为目标网页URL
target_url = "https://example.com"
# 添加请求头模拟浏览器,避免被反爬
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

response = requests.get(target_url, headers=headers)
if response.status_code == 200:
    soup = BeautifulSoup(response.text, "html.parser")
    # 注意用class_而非class,避免和Python关键字冲突
    price_element = soup.find("div", class_="element")
    
    if price_element:
        # 提取纯文本并清理多余空白字符
        clean_price = price_element.text.strip()
        print(clean_price)  # 输出如Rp 88.000
    else:
        print("未找到class为element的div元素,请检查网页结构或class名称")
else:
    print(f"请求失败,状态码:{response.status_code}")

2. 常见问题排查

  • class名称错误:检查网页源码中目标div的class是否确实是element,如果是多类名(如element price),需用列表传入:soup.find("div", class_=["element", "price"])
  • 反爬拦截:网站可能拒绝爬虫请求,添加headers(如User-Agent、Referer)可解决大部分基础反爬
  • 动态渲染内容:如果价格是通过JavaScript加载的,requests无法获取到动态生成的内容,此时需要用Selenium模拟浏览器:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(target_url)

try:
    # 定位目标元素
    price_element = driver.find_element(By.CLASS_NAME, "element")
    clean_price = price_element.text.strip()
    print(clean_price)
finally:
    driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:01:34