Как получить текст одного параметра, используя его значение с BeautifulSoup - PullRequest
0 голосов
/ 28 июня 2018

Мне нужно получить доступ к тексту определенной опции в выпадающем меню с помощью BeautifulSoup. До сих пор я только смог найти способы получить текст всех вариантов. Мне нужно использовать значение, назначенное параметру, но параметры перечислены не по порядку. Вот некоторые из HTML.

<option value="9">Aerospace Studies</option>
<option value="200">African American Studies</option>
<option value="10">African Languages</option>
<option value="11">African Studies</option>
<option value="12">Afrikaans</option>
<option value="13">Afro-American Studies</option>
<option value="14">American Indian Studies</option>
<option value="198">American Sign Language</option>
<option value="15">Ancient Near East</option>
<option value="16">Anesthesiology</option>
<option value="17">Anthropology</option>
<option value="19">Applied Linguistics</option>
<option value="20">Arabic</option>
<option value="21">Archaeology</option>
<option value="22">Architecture and Urban Design</option>
<option value="23">Armenian</option>
<option value="24">Art</option>
<option value="25">Art History</option>
<option value="26">Arts and Architecture</option>
<option value="201">Arts Education</option>

1 Ответ

0 голосов
/ 28 июня 2018

Я не уверен, что получу ваш вопрос, но вот способ собрать все значения и текст всех опций и отсортировать их по значению.

import bs4
soup = bs4.BeautifulSoup("""<option value="9">Aerospace Studies</option>
<option value="200">African American Studies</option>
<option value="10">African Languages</option>
<option value="11">African Studies</option>
<option value="12">Afrikaans</option>
<option value="13">Afro-American Studies</option>
<option value="14">American Indian Studies</option>
<option value="198">American Sign Language</option>
<option value="15">Ancient Near East</option>
<option value="16">Anesthesiology</option>
<option value="17">Anthropology</option>
<option value="19">Applied Linguistics</option>
<option value="20">Arabic</option>
<option value="21">Archaeology</option>
<option value="22">Architecture and Urban Design</option>
<option value="23">Armenian</option>
<option value="24">Art</option>
<option value="25">Art History</option>
<option value="26">Arts and Architecture</option>
<option value="201">Arts Education</option>""")
print(sorted(list(map(lambda x: (int(x['value']), x.text), soup.find_all('option')))))

из

[(9, u'Aerospace Studies'), (10, u'African Languages'), (11, u'African Studies'), (12, u'Afrikaans'), (13, u'Afro-American Studies'), (14, u'American Indian Studies'), (15, u'Ancient Near East'), (16, u'Anesthesiology'), (17, u'Anthropology'), (19, u'Applied Linguistics'), (20, u'Arabic'), (21, u'Archaeology'), (22, u'Architecture and Urban Design'), (23, u'Armenian'), (24, u'Art'), (25, u'Art History'), (26, u'Arts and Architecture'), (198, u'American Sign Language'), (200, u'African American Studies'), (201, u'Arts Education')]

Надеюсь, это поможет

...