Использование bs4 4.7.1.
Существует только одна таблица, и вам нужен второй столбец (td
) последней строки.Вы можете использовать last:child
для выбора последней строки;который следует использовать вместе с селектором типа tbody
и дочерним комбинатором >
, чтобы не получить строку заголовка.Вы можете использовать nth-of-type
, чтобы указать ячейку td
для возврата.
Теперь вы можете разработать это как минимум двумя способами:
- Обрабатывать случаи, когда они не найдены, например
name = getattr(soup.select_one('title'), 'text', 'N/A')
timing = getattr(soup.select_one('tbody > tr:last-child td:nth-of-type(2)'), 'text', 'N/A')
Добавление элементов в списки / структуру данных, которые могут быть выведены в конце как датафрейм и записаны как csv.Или вы можете придерживаться вашего текущего метода
Python:
import requests
from bs4 import BeautifulSoup as bs
urls = ['https://racevietnam.com/runner/buiducninh/ecopark-marathon-2019', 'https://racevietnam.com/runner/drtungnguyen83/ecopark-marathon-2019']
with requests.Session() as s:
for url in urls:
r = s.get(url)
soup = bs(r.content, 'lxml')
name = soup.select_one('title').text
timing = soup.select_one('tbody > tr:last-child td:nth-of-type(2)').text
print(name, timing)