【问题标题】:Extracting words within HTML tages in Python/Pandas在 Python/Pandas 中提取 HTML 标记中的单词
【发布时间】:2021-03-22 19:01:56
【问题描述】:

我抓取了需要格式化为表格的 HTML 文本。我想用粗体标签提取所有内容:<b></b> 我有以下代码:

import pandas as pd
html='<b>HR</b>Shohei Ohtani<br><b>2B</b>Mike Trout(2)/<br><b>SF</b>Billy Bob'

到目前为止,我已尝试将其放入列表,然后放入数据框:

html_list=html.split('br')
html_df=pd.DataFrame(html_list,columns=['content'])

这会产生:

print(html_df)
                     content
0    <b>HR</b>Shohei Ohtani<
1  ><b>2B</b>Mike Trout(2)/<
2        ><b>SF</b>Billy Bob

我想要这个:

print(html_df)
                     content var
0    <b>HR</b>Shohei Ohtani< HR
1  ><b>2B</b>Mike Trout(2)/< 2B
2        ><b>SF</b>Billy Bob SF

我尝试使用美丽的汤和 .findall,但无济于事。我对不同的方法持开放态度,包括颠倒我的一些步骤。

【问题讨论】:

    标签: html python-3.x pandas selenium-webdriver beautifulsoup


    【解决方案1】:

    这是你需要的吗?:

    from bs4 import BeautifulSoup
    html='<b>HR</b>Shohei Ohtani<br><b>2B</b>Mike Trout(2)/<br><b>SF</b>Billy Bob'
    soup = BeautifulSoup(html)
    b_tags = soup.find_all('b')
    
    for b_tag in b_tags:
       print(b_tag.text)
    

    【讨论】:

      【解决方案2】:

      解决方案

      只需使用如下一行代码:

      html_df['var'] = html_df['content'].str.extract(r'<b>.*?(.*)</b>')
      

      结果

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-22
        • 1970-01-01
        • 2016-12-19
        • 1970-01-01
        • 2012-11-19
        • 2015-01-04
        相关资源
        最近更新 更多