Python 靓汤上标
如何从所有文本中删除上标?我有下面的代码,可以获取所有可见的文本,但是脚注的上标把事情搞砸了。如何移除它们 例如,Python 靓汤上标,python,beautifulsoup,Python,Beautifulsoup,如何从所有文本中删除上标?我有下面的代码,可以获取所有可见的文本,但是脚注的上标把事情搞砸了。如何移除它们 例如,活动账户(1)、(2),(1)、(2)是可见的上标 from bs4 import BeautifulSoup from bs4.element import Comment import requests f_url='https://www.sec.gov/Archives/edgar/data/1633917/000163391718000094/exhibit991prq
活动账户(1)、(2)
,(1)、(2)
是可见的上标
from bs4 import BeautifulSoup
from bs4.element import Comment
import requests
f_url='https://www.sec.gov/Archives/edgar/data/1633917/000163391718000094/exhibit991prq12018pypl.htm'
def tag_visible(element):
if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
return False
if isinstance(element, Comment):
return False
return True
def text_from_html(body):
soup = BeautifulSoup(body, 'html.parser')
texts = soup.findAll(text=True)
visible_texts = filter(tag_visible, texts)
return u" ".join(t.strip() for t in visible_texts)
html = requests.get(f_url)
text= text_from_html(html.text)
BeautifulSoup函数返回输入中所有单个离散HTML元素的列表(
find_all
是在BeautifulSoup 4中使用的合适函数,优先于findAll
)。下一个函数遍历此列表并删除其回调例程返回的项False
。回调函数测试每个代码段的标记名,如果它在不需要的列表中,则返回False
,否则返回True
如果这些上标始终由正确的HTML标记sup
指示,则可以将其添加到回调函数中的不需要列表中
可能的陷阱有:
sup
,而不是仅指定垂直对齐:上标的类或范围代码>在其CSS中李>
假设您希望除去此上标标记中的所有元素。如果有例外(“20世纪”),你可以检查文本内容;例如,仅当其内容都是数字时才删除。如果有例外(“a2=b2+c2”),您必须检查更广泛的背景,或建立包含/排除的白名单或黑名单
哇!不知道sup
是一个选项。把它写在下面的答案中,我会给你评分。很高兴我能帮上忙——幸好最基本的解决方案奏效了!(根据可能不起作用的原因)如果您遇到其中一个原因需要帮助微调tag_visible
函数,请说出来。它可能需要一个HTML示例。