【问题标题】:how to use python to parse a html that is in txt format?如何使用python解析txt格式的html?
【发布时间】:2021-03-11 21:01:34
【问题描述】:

我正在尝试解析一个 txt,示例如下链接。 但是,txt 是 html 格式的。我正在尝试获取位于文件顶部的“COMPANY CONFORMED NAME”,并且我的函数应该返回“Monocle Acquisition Corp”。 https://www.sec.gov/Archives/edgar/data/1754170/0001571049-19-000004.txt

我在下面尝试过:

import requests
from bs4 import BeautifulSoup

url = 'https://www.sec.gov/Archives/edgar/data/1754170/0001571049-19-000004.txt'
r = requests.get(url)
soup = BeautifulSoup(r.content, "html")

但是,“soup”根本不包含“COMPANY CONFORMED NAME”。 有人能指出我正确的方向吗?

【问题讨论】:

  • 此文档似乎包含一些 HTML,但您感兴趣的部分不是 HTML。你不能使用 Beautiful Soup 来解析它。

标签: python html parsing


【解决方案1】:

您要查找的数据不是 HTML 结构,因此 Beautiful Soup 不是最好的工具。正确快速地搜索这些数据的方法就是使用一个简单的正则表达式,如下所示:

import re
import requests

url = 'https://www.sec.gov/Archives/edgar/data/1754170/0001571049-19-000004.txt'
r = requests.get(url)
text_string = r.content.decode()

name_re = re.compile("COMPANY CONFORMED NAME:[\\t]*(.+)\n")

match = name_re.search(text_string).group(1)
print(match)

【讨论】:

    【解决方案2】:

    你看起来像的部分在一个巨大的标签<SEC-HEADER>

    您可以使用soup.find('sec-header') 获取整个部分 但是您需要手动解析该部分,这样的工作可行,但这是一项肮脏的工作:

    (在 repli 中查看它:https://repl.it/@gui3/stackoverflow-parsing-html

    import requests
    from bs4 import BeautifulSoup
    
    url = 'https://www.sec.gov/Archives/edgar/data/1754170/0001571049-19-000004.txt'
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html")
    
    header = soup.find('sec-header').text
    
    company_name = None
    
    for line in header.split('\n'):
        split = line.split(':')
        if len(split) > 1 :
            key = split[0]
            value = split[1]
            if key.strip() == 'COMPANY CONFORMED NAME':
                company_name = value.strip()
                break
    
    print(company_name)
    
    

    可能有一些库能够比这段代码更好地解析这些数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2017-06-23
      相关资源
      最近更新 更多