As stated, the request returns the static html. This data is loaded dynamically.
You could use something like puppeteer or Selenium to allow the page to render first, then you can pull and parse the html. Or, you can get the data directly in a nice json format here.
I'm not sure what data you want exactly.
import pandas as pd
import requests
url = 'http://geoservices2.wallonie.be/arcgis/rest/services/APP_AQUALIM/STATION_PUBLIC/MapServer/0/query'
payload = {
'f': 'json',
'where': '1=1',
'returnGeometry': 'true',
'spatialRel': 'esriSpatialRelIntersects',
'outFields': '*',
'outSR': '31370'}
jsonData = requests.get(url, params=payload).json()
df = pd.json_normalize(jsonData['features'])
Output:
print(df)
attributes.NOMSTA attributes.LOCALITE ... geometry.x geometry.y
0 L5021 Resteigne ... 207730.0 86925.0
1 L5060 Romedenne ... 174509.0 94935.0
2 L5170 Baisieux ... 101819.0 119540.0
3 L5183 Onoz ... 171179.0 130329.0
4 L5201 Rhisnes ... 183172.0 130635.0
.. ... ... ... ... ...
175 L8640 Anthée ... 176992.0 103682.0
176 L8650 Gozin ... 194984.0 90490.0
177 T0025 Faulx les Tombes ... 195622.0 125555.0
178 T0054 Pépinster ... 251109.0 140666.0
179 T0055 Trooz (temporaire) ... 243552.0 140836.0
[180 rows x 8 columns]
To filter:
df_7880 = df[df['attributes.NOMSTA']=='L7880']
Output:
print(df_7880.to_string())
attributes.NOMSTA attributes.LOCALITE attributes.RIVIERE attributes.X_LAMBERT attributes.Y_LAMBERT attributes.ESRI_OID geometry.x geometry.y
152 L7880 Ere Rieu des Barges 79114.0 141573.0 153 79114.0 141573.0