futui 发表于 2023-4-12 17:18:24

源码转数据帧的问题,求大师帮忙,谢谢

下面的代码形成一列数据帧,我想要项目和数据两列,要怎么修改?求大师帮忙,谢谢

data = '''<div class="fund-info">
      <ul>
            <li class="padding-left-10">
                <a href="/Company/f10/gmbd_80000229.html">管理规模</a>:
                <label class="grey">15339.72亿元</label>
            </li>
            <li>基金数量:
                <label class="grey"><a href="/Company/f10/jjjz_80000229.html">550</a>只</label>
            </li>
            <li>经理人数:
                <label class="grey"><a href="/Company/f10/jjjl_80000229.html">73</a>人</label>
            </li>
            <li class="rating">天相评级:
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>

            </li>
            <li class="date">成立日期:
                <label class="grey">2001-04-17</label>
            </li>
            <li>公司性质:
                <label class="grey">中资企业</label>
            </li>
      </ul>
    </div>'''

    div_list = soup.find_all('div', class_="fund-info")
    li_list = div_list.find_all('li')
    li_list_d = []
    for li in li_list:
      #li_text = re.sub(r'\s','',li.get_text().strip())
      li_text = re.sub(r'\s','',li.get_text())
      li_list_d.append(li_text)

    print(li_list_d)   #['管理规模:15339.72亿元', '基金数量:550只', '经理人数:73人', '天相评级:\ue62d\ue62d\ue62d\ue62d\ue62d', '成立日期:2001-04-17', '公司性质:中资企业']
    df2 = pd.DataFrame(li_list_d)         
    print(df2)   
   
   

isdkz 发表于 2023-4-12 17:20:59

您好!根据您的需求,我帮您修改了代码,使其能够生成一个包含“项目”和“数据”两列的数据帧。

请参考以下代码:

import re
import pandas as pd
from bs4 import BeautifulSoup

data = '''<div class="fund-info">
      <ul>
            <li class="padding-left-10">
                <a href="/Company/f10/gmbd_80000229.html">管理规模</a>:
                <label class="grey">15339.72亿元</label>
            </li>
            <li>基金数量:
                <label class="grey"><a href="/Company/f10/jjjz_80000229.html">550</a>只</label>
            </li>
            <li>经理人数:
                <label class="grey"><a href="/Company/f10/jjjl_80000229.html">73</a>人</label>
            </li>
            <li class="rating">天相评级:
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>
                  <label class="star grade iconfont">&#xe62d;</label>

            </li>
            <li class="date">成立日期:
                <label class="grey">2001-04-17</label>
            </li>
            <li>公司性质:
                <label class="grey">中资企业</label>
            </li>
      </ul>
    </div>'''

soup = BeautifulSoup(data, 'html.parser')
div_list = soup.find_all('div', class_="fund-info")
li_list = div_list.find_all('li')

project_list = []
data_list = []

for li in li_list:
    li_text = re.sub(r'\s', '', li.get_text())
    project, data = re.split(r':', li_text, maxsplit=1)
    project_list.append(project)
    data_list.append(data)

df = pd.DataFrame({'项目': project_list, '数据': data_list})
print(df)

这个代码首先将提取到的信息分为项目和数据两部分,然后将它们分别添加到两个列表中。

最后,我们根据这两个列表创建一个包含“项目”和“数据”两列的数据帧。

注意:请确保已安装 BeautifulSoup 库。如果没有安装,请使用以下命令进行安装:

pip install beautifulsoup4
页: [1]
查看完整版本: 源码转数据帧的问题,求大师帮忙,谢谢