使用Beautiful Soup和python检索<b>值

2024-05-12 23:58:22 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是html页面的示例。尝试创建一个数据集,其中标记<b>下的值将作为头,标记{}的值将是它们的值。如何做到这一点。请帮忙。在

<div class ="profile">

        <P class="info">
          <b>Full name</b>
          <span>Raju Kumar</span>
        </p>

        <P class="info">
          <b>DOB</b>
          <span>05/06/1992</span>
        </p>

        <P class="info">
          <b>DOB</b>
          <span>05/06/1992</span>
        </p>



</div>

下面是我尝试将<b>标记值作为头。但它只返回第一个<b>标记值。在

^{pr2}$

Tags: 数据name标记divinfo示例html页面
3条回答

您只找到第一个带有soup.findp-使用soup.find_all,就像使用b标记一样

如果我理解正确,您需要循环两次:

header = [b.string for h in soup.find_all('p', class_='info') for b in h.find_all('b')]

您可以通过以下行获取列表:

values = [(p.find('b').string, p.find('span').string) 
             for p in soup.find_all('p', class_='info')]

如果您喜欢字典格式:

^{pr2}$

编辑:

如果你需要构建一个数据帧

您有方法DataFrame.from_items,给定一个对序列:

^{3}$

或者您可以使用DataFrame.from_dict

dict_values = {p.find('b').get_txt():p.find('span').get_txt() 
                  for p in soup.find_all('p', class_='info') }
value_df = pandas.DataFrame.from_dict(dict_values)

相关问题 更多 >