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

如何使用BeautifulSoup提取HTML文档中无class和id的指定tr元素

Python爬虫提取指定表格内容方案

原有代码存在的问题

  • 导入BeautifulSoup时设置了别名soup,但后续代码仍直接调用BeautifulSoup,会触发名称未定义错误
  • 重复解析HTML且调用了prettify()方法,该方法会给文本添加额外的空白字符,导致精确文本匹配失败
  • 仅匹配到了"Ένδικα Μέσα"对应的单元格,没有提取该行后续的内容单元格数据

调整后可运行代码

from bs4 import BeautifulSoup as soup
import requests
import csv

URL = 'https://www.epant.gr/apofaseis-gnomodotiseis/item/1451-apofasi-730-2021.html'
headers1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-61acac03-6279b8a6274777eb44d81aae", 
    "X-Client-Data": "CJW2yQEIpLbJAQjEtskBCKmdygEIuevKAQjr8ssBCOaEzAEItoXMAQjLicwBCKyOzAEI3I7MARiOnssB" }
page = requests.get(URL, headers = headers1)
# 仅需一次解析即可,不需要prettify处理
soup_obj = soup(page.content,"html.parser")
# 模糊匹配包含Ένδικα Μέσα的td,忽略前后空格
target_td = soup_obj.find('td', string=lambda text: text and "Ένδικα Μέσα" in text.strip())
if target_td:
    # 取当前td所在的行,再取该行第二个td的内容(就是对应值)
    target_content = target_td.find_next_sibling('td').get_text(strip=True)
    print("Ένδικα Μέσα 对应内容:", target_content)
else:
    print("未找到匹配的单元格")

代码说明

  • 简化了HTML解析逻辑,去掉冗余的二次解析和prettify调用,避免额外空白影响匹配
  • 用lambda表达式做模糊匹配,自动忽略单元格文本前后的空格、换行符,提升匹配成功率
  • 找到目标标签单元格后,通过find_next_sibling直接获取同 row 的值单元格,提取文本时自动清理多余空白

内容的提问来源于stack exchange,提问作者Θοδωρής Πάλλης

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:06