【问题标题】:How can I split the text elements out from this HTML String? Python如何从这个 HTML 字符串中拆分出文本元素? Python
【发布时间】:2020-08-04 08:00:43
【问题描述】:

早安,

我正在用 Python 进行一些 HTML 解析,我遇到了以下问题,这是单个表格单元格中的时间和名称配对。我正在尝试分别提取每条信息,并尝试了几种不同的方法来拆分以下字符串。

HTML 字符串:

<span><strong>13:30</strong><br/>SecondWord</span></a>

希望我的输出是:

text1 = 13:30
text2 = "SecondWord"

我目前正在使用循环遍历表中的所有行,我在其中获取文本并将其拆分为新行。我注意到 HTML 之间有一个换行符,因此它在网络上单独呈现,我试图用新行替换它并在其上运行我的拆分 - 但是我的 string.replace() 和 re.sub()方法似乎不起作用。 我很想知道我做错了什么。

最新方法:

resub_pat = r'<br/>'
rows=list()
for row in table.findAll("tr"):
    a = re.sub(resub_pat,"\n",row.text).split("\n")

这有点杂乱无章,但我希望我已经抓住了我的问题!我找不到任何类似的问题。

【问题讨论】:

    标签: python html python-3.x beautifulsoup


    【解决方案1】:

    你可以试试:

    from bs4 import BeautifulSoup
    import re
    
    # the soup
    soup = BeautifulSoup("<span><strong>13:30</strong><br/>SecondWord</span></a>", 'lxml')
    
    # the regex object
    rx = re.compile(r'(\d+:\d+)(.+)')
    
    # time, text
    text = soup.find('span').get_text()
    x,y  = rx.findall(text)[0]
    print(x)
    print(y)
    

    【讨论】:

    • 太棒了,谢谢!这里的所有答案都很好,但我选择了这个,因为正则表达式解决方案也可以转移到其他地方 - 谢谢!
    【解决方案2】:

    使用recursive=False 仅获取直接文本,使用strong.text 获取另一个文本。

    例如:

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup("<span><strong>13:30</strong><br/>SecondWord</span></a>", 'lxml')
    
    # text1
    print(soup.find("span").strong.text)     # --> 13:30
    # text2          
    print(soup.find("span").find(text=True, recursive=False))  # --> SecondWord
    

    【讨论】:

      【解决方案3】:
      from bs4 import BeautifulSoup
      
      
      txt = '''<span><strong>13:30</strong><br/>SecondWord</span></a>'''
      soup = BeautifulSoup(txt, 'html.parser')
      
      text1, text2 = soup.span.get_text(strip=True, separator='|').split('|')
      
      print(text1)
      print(text2)
      

      打印:

      13:30
      SecondWord
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-12
        • 2018-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-14
        • 1970-01-01
        相关资源
        最近更新 更多