簡體   English   中英

如何使用 python 解析 txt 格式的 html?

[英]how to use python to parse a html that is in txt format?

我正在嘗試解析一個txt,例如下面的鏈接。 但是,該 txt 格式為 html。 我正在嘗試獲取位於文件頂部的“COMPANY CONFORMED NAME”,而我的 function 應該返回“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”。 有人可以指出我正確的方向嗎?

您看起來像的部分在一個巨大的標簽<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)

可能有一些庫能夠比這段代碼更好地解析這些數據

您要查找的數據不在 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM