Извлечение текста из выбранных тегов с красивым супом - PullRequest
0 голосов
/ 24 января 2020

Я хочу извлечь текст из th тегов в таблице, чтобы я мог распечатать список станций метро из таблицы на странице Википедии. Мне нужен только текст из определенной таблицы (их на странице два)

import urllib.request
url = "https://en.wikipedia.org/wiki/List_of_London_Underground_stations"
page = urllib.request.urlopen(url)

from bs4 import BeautifulSoup
soup = BeautifulSoup(page, "lxml")

stations_table = soup.find("table", class_= "wikitable sortable plainrowheaders")
stations_table

for i in soup.find_all('th', stations_table):
    print(i.text)

Я могу получить таблицу, хранящуюся в переменной stations_table, но не могу напечатать текст в тегах th внутри таблица wikitable sortable plainrowheaders. В то время как он печатает название станции, он также печатает заголовки:

Станция Местные полномочия Зоны (ы) [†] Открыт [4] Основная линия открыта Использование [5]

Как я могу отфильтровать их?

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Показывает все th в таблице - не только станции, но и заголовки, такие как Stations, Lines

Чтобы пропустить это, я ищу все tr, пропускаю первую строку, а затем ищу th в каждом ряду

for i in stations_table.find_all('tr')[1:]
    print(i.find('th').text.strip())

Полный код

import urllib.request
from bs4 import BeautifulSoup

url = "https://en.wikipedia.org/wiki/List_of_London_Underground_stations"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "html.parser")

stations_table = soup.find("table", class_= "wikitable sortable plainrowheaders")

for i in stations_table.find_all('tr')[1:]:
    print(i.find('th').text.strip())
    #print(i.th.text.strip())    
1 голос
/ 24 января 2020
for i in soup.find_all('th', stations_table):

выполняет поиск всех заголовков таблицы и строк таблицы. Что можно сделать для этого, это извлечь все строки и начать печать со второй строки (игнорируя строку заголовка), как показано ниже

for i in stations_table.find_all('tr')[1:]:
    print(i.find('th').text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...