Веб-скрейпинг Википедия

Мне нужно указать только континент (Северная Америка), используя Википедию по URL-адресу (в приведенном ниже коде я заменю страну, в данном случае «Гватемала», и сделаю ее параметром в Power BI), но я получаю весь<aярлык. Как мне это сделать?

      import requests as rq
import pandas as pd
from bs4 import BeautifulSoup
import numpy as np
import re

url = 'https://en.wikipedia.org/wiki/Geography_of_Guatemala'
page = rq.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
res = soup.find_all('td', class_='infobox-data')
df = pd.DataFrame(res)
df = df.to_numpy()
df = str(df[0])
print(df)
print(re.search('\">(.*?)\</a>', df).group(1))

Это кадр данных:

      [<td class="infobox-data"><a href="/wiki/North_America" title="North America">North America</a></td>]

и этоre.search:

      <a href="/wiki/North_America" title="North America">North America

1 ответ

Я не знаю, лучшее ли это решение, но оно работает и следует некоторой логике. Например, я представляю, что вы хотите изменить страну и захватить континент.

Поэтому я в основном перебираю все результаты в вашем элементе find_all и добавляю только текстовые значения в новый список и вызываю элемент 0 (первый):

      url = 'https://en.wikipedia.org/wiki/Geography_of_Guatemala'
page = rq.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
res = soup.find_all('td', class_='infobox-data')
info_list = []
for i in res:
    info_list.append(i.text)
info_list[0]

В качестве альтернативы вы можете использовать только функцию поиска из BeautifulSoup, если вам просто нужно первое значение

      res = soup.find('td', class_='infobox-data')
res.text
Другие вопросы по тегам