Python BeautifulSoup получает идентификатор

#python #html #beautifulsoup

#python #HTML #прекрасный суп

Вопрос:

Я создал список, и мне нужно найти идентификаторы списка. Список выглядит следующим образом:

 x = [<h3><span class="mw-headline" id="19th_century">19th century</span></h3>,
 <h3><span class="mw-headline" id="20th_century">20th century</span></h3>,
 <h3><span class="mw-headline" id="21st_century">21st century</span></h3>,
 <h3><span class="mw-headline" id="Boundaries">Boundaries</span></h3>,
 <h3><span class="mw-headline" id="Topography">Topography</span></h3>]
 

Я попробовал что-то вроде

 x[0].contents
 

«find.all» и так далее, но на самом деле я не знаю, как получить идентификатор.

 import urllib
import requests
from bs4 import BeautifulSoup

url = r"https://en.wikipedia.org/wiki/Illinois"
mybytes = urllib.request.urlopen(url) 
mybytes = mybytes.read().decode("utf8") 
type(mybytes)

parsed_html = BeautifulSoup(mybytes, features = 'lxml') 
type(parsed_html)

x = parsed_html.body.find_all("h3")
#x[0].contents('table', attrs={'id':'data_table'})

x[0:3]
 

Комментарии:

1. Это недопустимый python. Опубликуйте что-нибудь, что мы можем использовать, тогда, возможно, мы сможем помочь.

Ответ №1:

Предполагая, что вы анализируете html с помощью BeautifulSoup, вы можете использовать find_all для получения всех нужных элементов, а затем получить идентификаторы:

 x = """<h3><span class="mw-headline" id="19th_century">19th century</span></h3>,
 <h3><span class="mw-headline" id="20th_century">20th century</span></h3>,
 <h3><span class="mw-headline" id="21st_century">21st century</span></h3>,
 <h3><span class="mw-headline" id="Boundaries">Boundaries</span></h3>,
 <h3><span class="mw-headline" id="Topography">Topography</span></h3>"""

soup = BeautifulSoup(x, "lxml")
for tag in soup.find_all("span") :
    print(tag.get('id'))
 

Вывод:

 19th_century
20th_century
21st_century
Boundaries
Topography
 

Комментарии:

1. Большое спасибо, что мне помогло