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

如何从含多嵌入标签的网页爬取指定td元素?Python爬虫问题

问题说明

使用Python编写网页爬虫时遇到问题:当前代码会爬取网页内多个标签的文本,无法仅提取目标**「enhanced form」**区域下的单个td元素。需修正代码,实现仅提取该区域内指定td的文本并输出到Excel表格。

修正后的代码
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook

url = "https://www.racingandsports.com.au/form-guide/thoroughbred/australia/cranbourne/2024-04-26/R8/enhanced-form"

# 发送GET请求获取网页内容
response = requests.get(url)

if response.status_code == 200:
    soup = BeautifulSoup(response.content, "html.parser")
    
    # 先定位到「enhanced form」对应的容器(需根据页面实际HTML结构调整定位规则)
    enhanced_form_container = soup.find("div", class_="enhanced-form")
    table = None
    if enhanced_form_container:
        # 在目标容器内查找表格
        table = enhanced_form_container.find("table", id="tblStats")
    else:
        # 若找不到容器,降级查找页面中的目标表格
        table = soup.find("table", id="tblStats")
    
    if table:
        wb = Workbook()
        ws = wb.active
        ws.title = "EnhancedFormData"
        
        # 定位目标行并提取单个td(示例为第一行的第6个td,可根据需求调整)
        target_row = table.find("tbody").find("tr")
        if target_row:
            tds = target_row.find_all("td")
            if len(tds) >= 6:
                target_text = tds[5].get_text(strip=True)
                ws.cell(row=1, column=1, value=target_text)
                wb.save("enhanced_form_output.xlsx")
                print("单个td文本已成功写入enhanced_form_output.xlsx")
            else:
                print("目标行的td数量不足,无法提取指定位置的元素")
        else:
            print("表格tbody内未找到目标行")
    else:
        print("未找到id为'tblStats'的表格")
else:
    print(f"网页请求失败,状态码:{response.status_code}")
核心修正内容
  • 精准区域锁定:先定位「enhanced form」对应的容器元素,再从中查找目标表格,避免抓取到页面其他无关区域的内容。
  • 单个元素提取:不再遍历所有行,而是直接定位目标行并提取指定位置的td,确保只获取目标元素的文本。
  • 异常防护:增加td数量判断,避免因页面结构变化或元素缺失导致的索引错误。

注:若实际需求是提取「enhanced form」区域下的多个td,可将代码调整为遍历目标区域内的指定行集合,但需明确“单个td”的具体指向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:45:20