python - Beautifulsoup 跨度 id 标签到 Pandas

标签 python pandas beautifulsoup

我有以下 html:

</tr><tr>
<td>
<span id="Grid_exdate_43">2/15/2005</span>
</td><td>Cash</td><td>
<span id="Grid_CashAmount_43">0.08</span>
</td><td>
<span id="Grid_DeclDate_43">--</span>
</td><td>
<span id="Grid_RecDate_43">2/17/2005</span>
</td><td>
<span id="Grid_PayDate_43">3/10/2005</span>
</td>
</tr><tr>
<td>
<span id="Grid_exdate_44">11/15/2004</span>
</td><td>Cash</td><td>
<span id="Grid_CashAmount_44">3.08</span>
</td><td>
<span id="Grid_DeclDate_44">--</span>
</td><td>
<span id="Grid_RecDate_44">11/17/2004</span>
</td><td>
<span id="Grid_PayDate_44">12/2/2004</span>
</td>
</tr><tr>

每个部分都有相同的5项,分别是:Grid_exdate, Grid_CashAmount, Grid_DeclDate, Grid_RecDate, Grid_PayDate。每个部分的每个 id 后面都有一个整数,每个部分递增。在上面的示例中,我们有第 43 和 44 节。

我需要能够将每个部分保存为 Pandas 数据框中的一行。数据框如下:

Grid_exdate   Grid_CashAmount   Grid_DeclDate   Grid_RecDate   Grid_PayDate
2/15/2005     0.08              --              2/17/2005      3/10/2005
11/15/2004    3.08              --              11/17/2004     12/2/2004

我不知道该怎么做。

编辑:

好的,我已经想出了一些可行的办法:

def get_exdate(self, id):
    return id and re.compile("Grid_exdate_").search(id)

df = pd.DataFrame()
exdate_list = []
for link in soup.find_all(id=self.get_exdate):
    exdate_list.append(link.string)

df['Grid_exdate'] = exdate_list

所以上面的代码使用正则表达式获取所有 Grid_exdate_ 值,将所有结果添加到列表中,然后将其作为列添加到数据框中。

我只创建了其中的 5 个,每个字段一个。如果有人有更好的解决方案,请告诉我(这可能不是一种非常有效的方法)。否则这应该可以解决问题。

最佳答案

感谢大家提供建议的解决方案。最后,我采用了以下似乎是最简单的解决方案:

def get_exdate(self, id):
    return id and re.compile("Grid_exdate_").search(id)

df = pd.DataFrame()
exdate_list = []
for link in soup.find_all(id=self.get_exdate):
    exdate_list.append(link.string)

df['Grid_exdate'] = exdate_list

这会使用 re.compile 在 html/soup 中搜索以 Grid_exdate_ 开头的所有内容。然后将结果添加到数据框。因此,我刚刚为每个必填字段创建了一个 re.compile 搜索,并将它们全部添加到具有正确列标题的数据框中。

关于python - Beautifulsoup 跨度 id 标签到 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082098/

相关文章:

python - 参与区 Nao

python - 在公共(public)列上连接多个数据框

python - 'Stack( )' output with all Individual index' s 填充 Pandas DataFrame

python - 从网站读取数据传递参数

python - 无法使用 BeautifulSoup 从网站抓取表数据

python - 在Python中动态替换字符串

python - 调整扫描线填充以检测离散对象

python - 有没有一种简单的方法来获得多类分类的混淆矩阵? (OneVsRest)

javascript - 从 python 中的标签名称中抓取数据

Python 3.5 安装 pyvenv