【问题标题】:Extracting a specific string out an HTML document从 HTML 文档中提取特定字符串
【发布时间】:2012-04-04 22:08:16
【问题描述】:

我只需要从离线 HTML 文档中采样和提取特定字符串,并将该信息干净整洁地写入 *.txt 文件中。

例如,假设这是 HTML 文件的一部分:

    <span id="dataView01">001.00 SPL</span>
    <span id="dataView02">543.00 SPL</span>
    <span id="dataView03">056.00 SPL</span>
    <span id="dataView04">228.00 SPL</span>

我需要得到这个结果:

   001.00 SPL
   543.00 SPL
   056.00 SPL
   228.00 SPL

你能帮我解决这个问题吗? 谢谢。

【问题讨论】:

    标签: python html parsing


    【解决方案1】:

    使用像BeautifulSoup这样的HTML解析器。
    示例:

    from bs4 import BeautifulSoup as bs
    import re
    
    markup = '''<span id="dataView01">001.00 SPL</span>
        <span id="dataView02">543.00 SPL</span>
        <span id="dataView03">056.00 SPL</span>
        <span id="dataView04">228.00 SPL</span>'''
    
    soup = bs(markup)
    tags = soup.find_all('span', id=re.compile(r'[dataView]\d+'))
    for t in tags:  
        print(t.text)
    

    结果:

    001.00 声压级 543.00 声压级 056.00 声压级 228.00 声压级

    下一步;写入 .txt 文件:

    import csv
    
    with open('output.txt','wb') as fou:
        csv_writer = csv.writer(fou)
        for tag in tags:
            split_on_whitespace = t.text.split()
            csv_writer.writerow(split_on_whitespace)
    

    【讨论】:

    • 请注意:代码仅用于说明目的,当然还有其他方法可以做到这一点。如果您有任何问题,请随时发表评论,我会尽快解释。祝你好运。
    • 您好,刚刚下载了bs4,很好用。我不确定的唯一部分是如何对 html 文件进行采样并获取所有准备好由 bs4 库处理的“543.00 SPL”字符串。谢谢!真的很有帮助。
    • 您尝试过我发布的.find_all() 代码示例吗?它是根据您提供的标记示例量身定制的。
    • 对不起,我没看过。我对所有这些 stackoverflow 发布和链接等都有些陌生。
    • 我完成了所有这些工作,唯一缺少的部分是我打开 HTML 文件并对其进行采样的部分,以便我可以将其输入 bs 处理器。非常感谢您的帮助!
    【解决方案2】:

    【讨论】:

    • 谢谢,我在上面的 bs4 答案中取得了进展。 bs4 效果很好。
    【解决方案3】:
     import re
     s='001.00 SPL 543.00 SPL 056.00 SPL 228.00 SPL'
     print re.search(r'(\d{3}\.\d{2}\sSPL\s\d{3}\.\d{2}\sSPL\s\d{3}\.\d{2}\sSPL\s\d{3}\.\d{2}\sSPL)',s).group()
    

    我不知道 html 文档中的周围文本,但这可能有效。

    我看到你的编辑我会更新我的

    实际上是 jldupont 的回答。

    【讨论】:

    • 谢谢!好吧,我不熟悉文件操作:(我需要打开 HTML 文件,然后仅对这些行进行采样,然后提取中间部分。re lib 可能会完成查找工作,然后我将拆分并过滤和提取,但我不确定如何打开文件并扫描它。谢谢!
    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2020-02-28
    • 2014-05-20
    • 2018-05-03
    • 1970-01-01
    相关资源
    最近更新 更多