如何在不舍入整数值的情况下抓取网站 table?
How to scrape the website table without rounding integer values?
我正在从德国网站上抓取 tables。德国人使用逗号 (,) 表示小数点 (.),小数点表示逗号。当我抓取 table 时,它会自动舍入或转换数据。例如,如果值为“两千”,在德语中写为 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)
对于此示例,您可能希望将 ,
替换为 .
以获得正确的十进制数表示法:
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
...
编辑:
由于这可能仅适用于此示例,更好的方法是使用传递给 pd.read_html()
的 thousands=
和 decimal=
参数
您可以使用 thousands='.'
和 decimal=','
参数:
import requests
import pandas as pd
url = "https://buchholz-stadtwerke.de/wasseranalyse.html"
df = pd.read_html(requests.get(url).text, flavor="bs4", thousands='.', decimal=',')
print(df)
打印:
[ Parameter Einheit Grenzwert Messwert, Februar 2020
0 Wassertemperatur °C NaN 9.8
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
4 Sättigungsindex NaN NaN 0.01
5 Karbonathärte (dH°) °dH NaN 4.54
6 Gesamthärte (dH°) °dH NaN 6.45
7 Härtebereich NaN NaN weich
8 Calcitlösekapazität mg/l 5 -0.1
9 Fluorid mg/l 1.5 <0,1
10 Chlorid mg/l 250 22.8
11 Nitrit (NO2) mg/l 0.1 <0,01
12 Nitrat (NO3) mg/l 50 6.29
13 o-Phosphat mg/l NaN <0,1
14 Sulfat mg/l 250 28.5
15 Cyanid mg/l 0.05 <0,005
16 Natrium mg/l 200 13.3
17 Ammonium mg/l 0.5 <0,1
18 Kalium mg/l NaN 1.09
19 Magnesium mg/l NaN 2.58
20 Ionenbilanz in % % -4 bis 4,0 1.82
21 Trübung NTU 1 0.5
22 Färbung (SAK Hg 436nm) m-1 0.5 <0,2
23 Geschmack NaN NaN ohne
24 Arsen mg/l 0.01 <0,002
25 Quecksilber mg/l 0.001 <0,0002
26 Blei mg/l 0.01 <0,003
27 Cadmium mg/l 0.003 <0,0005
28 Kupfer mg/l 2 <0,01
29 Bor mg/l 1 0.03
30 Aluminium mg/l 0.2 <0,02
31 Antimon mg/l 0.005 <0,001
32 Selen mg/l 0.01 <0,003
33 Eisen mg/l 0.2 <0,02
34 Mangan mg/l 0.05 <0,005
35 Kolonienzahl bei 22° /ml 100 0
36 Kolonienzahl bei 36° /ml 100 0
37 Coliforme Bakterien /100 ml 0 0]
我正在从德国网站上抓取 tables。德国人使用逗号 (,) 表示小数点 (.),小数点表示逗号。当我抓取 table 时,它会自动舍入或转换数据。例如,如果值为“两千”,在德语中写为 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)
对于此示例,您可能希望将 ,
替换为 .
以获得正确的十进制数表示法:
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
...
编辑:
由于这可能仅适用于此示例,更好的方法是使用传递给 pd.read_html()
thousands=
和 decimal=
参数
您可以使用 thousands='.'
和 decimal=','
参数:
import requests
import pandas as pd
url = "https://buchholz-stadtwerke.de/wasseranalyse.html"
df = pd.read_html(requests.get(url).text, flavor="bs4", thousands='.', decimal=',')
print(df)
打印:
[ Parameter Einheit Grenzwert Messwert, Februar 2020
0 Wassertemperatur °C NaN 9.8
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
4 Sättigungsindex NaN NaN 0.01
5 Karbonathärte (dH°) °dH NaN 4.54
6 Gesamthärte (dH°) °dH NaN 6.45
7 Härtebereich NaN NaN weich
8 Calcitlösekapazität mg/l 5 -0.1
9 Fluorid mg/l 1.5 <0,1
10 Chlorid mg/l 250 22.8
11 Nitrit (NO2) mg/l 0.1 <0,01
12 Nitrat (NO3) mg/l 50 6.29
13 o-Phosphat mg/l NaN <0,1
14 Sulfat mg/l 250 28.5
15 Cyanid mg/l 0.05 <0,005
16 Natrium mg/l 200 13.3
17 Ammonium mg/l 0.5 <0,1
18 Kalium mg/l NaN 1.09
19 Magnesium mg/l NaN 2.58
20 Ionenbilanz in % % -4 bis 4,0 1.82
21 Trübung NTU 1 0.5
22 Färbung (SAK Hg 436nm) m-1 0.5 <0,2
23 Geschmack NaN NaN ohne
24 Arsen mg/l 0.01 <0,002
25 Quecksilber mg/l 0.001 <0,0002
26 Blei mg/l 0.01 <0,003
27 Cadmium mg/l 0.003 <0,0005
28 Kupfer mg/l 2 <0,01
29 Bor mg/l 1 0.03
30 Aluminium mg/l 0.2 <0,02
31 Antimon mg/l 0.005 <0,001
32 Selen mg/l 0.01 <0,003
33 Eisen mg/l 0.2 <0,02
34 Mangan mg/l 0.05 <0,005
35 Kolonienzahl bei 22° /ml 100 0
36 Kolonienzahl bei 36° /ml 100 0
37 Coliforme Bakterien /100 ml 0 0]