С помощью bs4 4.7.1 вы можете использовать :contains
, чтобы указать заголовок таблицы на website
, а затем получить следующий атрибут тега href.Ясно, что есть другие случаи, когда этот шаблон может совпадать, поэтому, возможно, для входных значений требуется некоторая другая форма проверки.
Вы можете добавить дополнительный селектор класса для vcard, если хотите: result = soup.select_one('.vcard th:contains(Website) + td > [href]')
Python
import requests
from bs4 import BeautifulSoup as bs
cities = ['Paris', 'Frankfurt', 'London']
base = 'https://en.wikipedia.org/wiki/'
with requests.Session() as s:
for city in cities:
r = s.get(base + city)
soup = bs(r.content, 'lxml')
result = soup.select_one('th:contains(Website) + td > [href]')
if result is None:
print(city, 'selector failed to find url')
else:
print(city, result['href'])