首页 > 解决方案 > 在 Wikipedia 上使用 BeautifulSoup 进行网页抓取

问题描述

我是 python 新手,并试图使用 BeautifulSoup从 wikitable 的第三列中提取Wikipedia 页面上的所有火车站名称。我已经尝试了下面的代码,但它似乎将每一行单元格作为一组信息返回

contentTable  = soup.find('table', { "class" : "wikitable"})
cols  = contentTable.find_all('td')
for col in cols:
    soup.find_all("a")
    print(col.get_text())

输出如下,代表表中的 1 行:

CG2 
TE [a]
Changi Airport
樟宜机场
சாங்கி விமானநிலையம்
8 February 2002
Changi Airport

CGA
Changi
Singapore Changi Airport,  Changi Airport PTB2 Bus Terminal

预期的数据框列站名称

Station Names
Jurong East
Bukit Batok
etc...

有人可以教我如何正确编码吗?谢谢!

标签: pythonweb-scrapingbeautifulsoup

解决方案


您的程序只是简单地在 wikitable 上打印每个 'td' 标记的文本内容。

试试这个:

contentTable = soup.find('table', {"class": "wikitable"})
trs = contentTable.find_all('tr')

for tr in trs:
    tds = tr.find_all('td')
    for td in tds:
        if tds.index(td) == 2:
            print(td.get_text())

首先,它抓取每一行,找到该行上的每个 'td'-tag,如果它是所述行上的第三个 'td'-tag,则打印出其内容。


推荐阅读