【问题标题】:Cleaning tags from HTML从 HTML 中清除标签
【发布时间】:2022-01-19 22:01:48
【问题描述】:

我想从一个 html 文件中提取一些数据。我的问题是您看到的第一段代码。我无法正确擦除文本中的每个标签(<tr>,<th>,...)

table = soup.find(class_="article-table")
[row.text.split() for row in table.find_all("tr")]
table = lxml.html.fromstring(table)

data = []
for row in table.find_all("tr")[1:]:
    x = row.text.split()
    name = " ".join(i for i in x if i.isalpha() or "-" in i)
    res = [i for i in x if not (i.isalpha() or "-" in i)]
    res.insert(1, name)

在你看到的下一行代码中,它删除了每个标签,但现在我不知道如何只提取我想要的文本。

soup = BeautifulSoup(page.content, 'lxml').text

有什么想法吗?

【问题讨论】:

    标签: python html


    【解决方案1】:

    我不太确定您的问题是什么。首先你在 2. 行代码中的列表理解没有分配给任何变量?我认为你应该这样做:

    rows = [row.text.split() for row in table.find_all("tr")]
    

    也许这个Answer 也有帮助。

    【讨论】:

    • 我试过你给我的链接,但它知道它有一个错误。第 13 行,在 rows = table.find_all(lambda tag: tag.name=='tr') AttributeError : 'NoneType' 对象没有属性 'find_all'
    • 您可能必须查看分配“表格”的第 12 行。在您的情况下, bs.find() 返回无。检查您的 lambda 函数中的选择是否不太严格。可能是复制和粘贴错误。
    • 非常感谢您抽出宝贵时间您的链接将我带到另一个链接linkwith the solution
    • 不客气!
    猜你喜欢
    • 2022-12-03
    • 2011-02-26
    • 2018-06-19
    • 2010-11-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多