【发布时间】:2020-09-13 19:07:33
【问题描述】:
我的目标是抓取一个 Wikipedia 表格并将其与 GeoHack 中的坐标连接起来。我在这里找到的代码How to scrape data from different Wikipedia pages? 在我的情况下仅适用于第一行,我认为它的发生是因为 Wiki 表包含的合并单元格和这个特定代码 td rowspan。 我是编码新手,我对这个问题有点困惑,所以,任何帮助都会非常有帮助。
import requests
from bs4 import BeautifulSoup as BS
import re
def parse_district(url):
r = requests.get(url)
soup = BS(r.text, 'html.parser')
link = soup.find('a', {'href': re.compile('//tools.wmflabs.org/.*')})
item = link['href'].split('params=')[1].split('type:')[0].replace('_', ' ').strip()
#print(item)
items = link.find_all('span', {'class':('latitude', 'longitude')})
#print('>>>', [item] + [i.text for i in items][:3] )
return [item] + [i.text for i in items]
def main():
url = 'https://en.wikipedia.org/wiki/List_of_neighborhoods_of_Madrid'
r = requests.get(url)
soup = BS(r.text, 'html.parser')
table = soup.find_all('table', {'class': 'wikitable'})
for row in table[0].find_all('tr'):
items = row.find_all('td')
if items:
row = [i.text.strip() for i in items]
link = 'https://en.wikipedia.org' + items[0].a['href']
data = parse_district(link)
row += data
print(row)
main()
【问题讨论】:
标签: python web-scraping beautifulsoup html-table