每个城市
dd
标签,所以你可以直接使用
find_all()
函数获取名称和URL。然后逐一访问每个URL并获取表。在这个例子中,只有5次重复,删除
5.
完整循环
import requests
from bs4 import BeautifulSoup
import pandas as pd
def get_info(city_url: str) -> dict:
info_data = {}
response = requests.get(city_url)
soup = BeautifulSoup(response.text, 'lxml')
for x in soup.find('tbody').find_all(
lambda tag: tag.name == 'tr' and tag.get('class') == ['hintergrundfarbe-basis']):
if not x.get('style'):
if 'Koordinaten' in x.get_text():
info_data['Koordinaten'] = x.findNext('span', class_='coordinates').get_text()
else:
info_data[x.get_text(strip=True).split(':')[0]] = x.get_text(strip=True).split(':')[-1]
return info_data
cities = []
response = requests.get('https://de.wikipedia.org/wiki/Liste_der_St%C3%A4dte_in_Deutschland#Liste_der_St%C3%A4dte_in_Deutschland')
soup = BeautifulSoup(response.text, 'lxml')
for city in soup.find_all('dd')[:5]:
city_url = 'https://de.wikipedia.org' + city.findNext('a').get('href')
result = {'City': city.get_text(), 'URL': 'https://de.wikipedia.org' + city.findNext('a').get('href')}
result |= get_info(city_url)
cities.append(result)
df = pd.DataFrame(cities)
print(df.to_string())
输出:
City URL Koordinaten Bundesland Regierungsbezirk Landkreis Höhe Fläche Einwohner Bevölkerungsdichte Postleitzahl Vorwahl Kfz-Kennzeichen Gemeindeschlüssel Adresse derStadtverwaltung Bürgermeister Postleitzahlen Vorwahlen Stadtgliederung Oberbürgermeisterin Oberbürgermeister Erste Bürgermeisterin Erster Bürgermeister
0 Aach (BW) https://de.wikipedia.org/wiki/Aach_(Hegau) 47° 51â²Â N, 8° 51â²Â O Baden-Württemberg Freiburg Konstanz 545 m ü.NHN 10,68 km2 2384(31. Dez. 2022)[1] 223 Einwohner je km2 78267 07774 KN,STO 08 3 35 001 HauptstraÃe 1678267 Aach Manfred Ossola NaN NaN NaN NaN NaN NaN NaN
1 Aachen (NW) https://de.wikipedia.org/wiki/Aachen 50° 47â²Â N, 6° 5â²Â O Nordrhein-Westfalen Köln Städteregion Aachen 175 m ü.NHN 160,85 km2 252.769(31. Dez. 2023)[1] 1571 Einwohner je km2 NaN NaN AC, MON 05 3 34 002 Markt52062 Aachen NaN 52062â52080 0241, 02405, 02407, 02408 7Stadtbezirke Sibylle Keupen(parteilos) NaN NaN NaN
2 Aalen (BW) https://de.wikipedia.org/wiki/Aalen 48° 50â²Â N, 10° 6â²Â O Baden-Württemberg Stuttgart Ostalbkreis 430 m ü.NHN 146,58 km2 68.816(31. Dez. 2022)[1] 469 Einwohner je km2 NaN NaN AA, GD 08 1 36 088 NaN NaN 73430â73434, 73453 07361, 07366, 07367 Kernstadtund 8Stadtbezirke NaN Frederick Brütting(SPD) NaN NaN
3 Abenberg (BY) https://de.wikipedia.org/wiki/Abenberg 49° 15â²Â N, 10° 58â²Â O Bayern Mittelfranken Roth 414 m ü.NHN 48,41 km2 5614(31. Dez. 2023)[1] 116 Einwohner je km2 91183 09178 RH, HIP 09 5 76 111 Stillaplatz 191183 Abenberg NaN NaN NaN 14Gemeindeteile NaN NaN Susanne König (parteilos) NaN
4 Abensberg (BY) https://de.wikipedia.org/wiki/Abensberg 48° 49â²Â N, 11° 51â²Â O Bayern Niederbayern Kelheim 370 m ü.NHN 60,26 km2 14.685(31. Dez. 2023)[1] 244 Einwohner je km2 93326 09443 KEH,MAI,PAR, RID,ROL 09 2 73 111 Stadtplatz 193326 Abensberg NaN NaN NaN 22Gemeindeteile NaN NaN NaN Bernhard Resch[2]