鱼C论坛

 找回密码
 立即注册
查看: 1263|回复: 1

[已解决]源码转数据帧的问题,求大师帮忙,谢谢

[复制链接]
发表于 2023-4-12 17:18:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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")[0]
    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)   
   
   
最佳答案
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"></label>
                    <label class="star grade iconfont"></label>
                    <label class="star grade iconfont"></label>
                    <label class="star grade iconfont"></label>
                    <label class="star grade iconfont"></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")[0]
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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"></label>
                    <label class="star grade iconfont"></label>
                    <label class="star grade iconfont"></label>
                    <label class="star grade iconfont"></label>
                    <label class="star grade iconfont"></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")[0]
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表