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

使用Python BeautifulSoup爬取resultColumn失败求助

解决无法爬取resultColumn内容的问题

Hey,我来帮你搞定这个问题~

问题出在哪?

首先,你用urllib直接请求拿到的只是页面的初始静态HTML,而页面里的resultColumn区域内容是通过JavaScript动态加载出来的——也就是说,当你请求页面时,这部分内容还没生成,得等浏览器执行完JS才会出现,所以BeautifulSoup自然找不到它。另外你的代码里查找元素的语法也有点小错误:containers[6].findAll("div","id":"resultColumn")应该写成containers[6].findAll("div", {"id": "resultColumn"}),不过这不是核心问题,就算改对了也拿不到内容。

两个可行的解决方案

方案一:用Selenium模拟浏览器加载(最直观)

Selenium会模拟真实浏览器打开页面,执行所有JS代码,这样就能获取到动态渲染后的内容了。

第一步,先安装Selenium和对应浏览器的驱动:

pip install selenium

然后去下载对应浏览器的驱动(比如Chrome的ChromeDriver),要和你的浏览器版本匹配,把它放到环境变量或者指定路径。

然后用下面的代码试试:

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
from bs4 import BeautifulSoup as soup

# 初始化Chrome浏览器驱动(如果驱动不在环境变量,要指定路径:webdriver.Chrome(executable_path="你的ChromeDriver路径"))
driver = webdriver.Chrome()
my_url = 'https://www.nab.com.au/locations?return#lunch'

driver.get(my_url)

# 等待resultColumn加载出来,最多等10秒
try:
    # 等元素出现
    result_column = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "resultColumn"))
    )
    # 获取这个区域的HTML
    result_html = result_column.get_attribute('innerHTML')
    print(result_html)

    # 要是想用BeautifulSoup解析,就继续处理
    page_soup = soup(result_html, "html.parser")
    # 比如提取里面的文本内容
    all_text = page_soup.get_text(strip=True)
    print(all_text)

finally:
    # 用完记得关浏览器
    driver.quit()

方案二:直接抓API接口(更高效)

如果你不想用浏览器模拟,可以打开浏览器的开发者工具(按F12),切换到Network标签,刷新页面,找加载门店数据的XHR请求——一般动态内容都是通过API接口获取的,找到那个接口后直接请求它,就能拿到结构化的JSON数据,比解析HTML方便多了。

举个示例(你需要自己找到实际的API地址):

import requests

# 替换成你在Network里找到的真实API地址
api_url = "https://example.com/api/locations"
response = requests.get(api_url)
data = response.json()

# 直接处理JSON数据就行
print(data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:26