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

无法获取<div id="market-stats">下<script>内容,Python爬取求助

解决方法

第一步:修正BeautifulSoup的查找语法

你的代码里find方法的参数写错了,应该用id而不是id_(id_仅用于和Python关键字冲突的属性,比如class_,id不属于这类情况)。修正后的代码片段:

data = soup.find('div', id='market-stats')

如果修正后还是返回None,说明目标内容是通过JavaScript动态渲染的,requests获取的静态HTML里不存在这部分内容。

第二步:处理动态加载内容

现代网站常通过JS动态生成页面数据,requests只能拿到初始静态HTML,无法执行JS渲染后的内容。这时可以用Selenium模拟浏览器行为获取完整页面:

安装依赖

pip install selenium

同时需要下载对应浏览器的驱动(比如ChromeDriver),确保驱动版本和你的浏览器版本匹配。

示例代码

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = "https://www.dotproperty.co.th/en/condo/2945/nai-harn-beach-condominium"

# 配置Chrome无头模式(可选,无需打开浏览器窗口)
chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36")

# 初始化浏览器驱动
driver = webdriver.Chrome(options=chrome_options)
driver.get(url)

# 获取渲染后的页面源码
page_source = driver.page_source
driver.quit()

# 解析页面
soup = BeautifulSoup(page_source, "html.parser")
data = soup.find('div', id='market-stats')

# 提取script标签内容
if data:
    script_tag = data.find('script')
    if script_tag:
        print(script_tag.string)
    else:
        print("未找到目标script标签")
else:
    print("未找到id为market-stats的div")

额外提示

  • 部分网站有反爬机制,可添加Accept、Referer等请求头,或设置请求间隔避免被封禁。
  • 提取到的script内容通常是JSON格式,可通过json模块解析为字典,方便提取房价数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:15:42