首页 > 解决方案 > 如何在不舍入整数值的情况下抓取网站表?

问题描述

我正在从德国网站上抓取表格。德国人使用逗号(,)作为小数(。)和小数点作为逗号。当我抓取表格时,它会自动舍入或转换数据。例如,如果值是“两千”,德语写为 2.000。BS4 将其转换为两 (2)

有什么解决方案可以让我在不更改值的情况下进行刮擦吗?

这是我的代码。

import requests
import pandas as pd

url = "https://buchholz-stadtwerke.de/wasseranalyse.html"

df = pd.read_html(requests.get(url).text, flavor="bs4")
df = pd.concat(df)

标签: pythonpandasbeautifulsouprounding

解决方案


对于此示例,您可能需要替换,.以获得正确的十进制数字表示:

import requests
import pandas as pd

url = "https://buchholz-stadtwerke.de/wasseranalyse.html"

df = pd.read_html(requests.get(url).text.replace(",", "."), flavor="bs4")
df = pd.concat(df)
print(df)

输出:

1         Leitfähigkeit (25°)    µS/cm         2790                    302
2   Sauerstoff (elektrochem.)     mg/l          NaN                   10.9
3                     pH-Wert      NaN  6.5 bis 9.5                   8.06
...

编辑:

由于这可能仅适用于此示例,因此更好的方法是使用传入的thousands=参数decimal=pd.read_html()


推荐阅读