Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 靓汤上标_Python_Beautifulsoup - Fatal编程技术网

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示例。