[<div class="rotation"><ol>
<li><a href="https://www.geeksforgeeks.org/array-rotation/">Program for array rotation</a><li></ol></div>]
В приведенном выше <class 'bs4.element.ResultSet'>
я хочу извлечь текст Program for array rotation
и ссылку "https://www.geeksforgeeks.org/array-rotation/"
Как я могу сделать это с помощью Python?
Если есть только одна ссылка, которую вы хотите извлечь, вы можете использовать:
link = soup.select_one('li a[href]')['href']
text = soup.select_one('li a[href]').text
print(link, text)
Но чтобы сделать его более общим, вы можете выбрать все <a>
, а затем перебрать ResultSet
с помощью dict comprehension
, чтобы получить уникальные значения href
или text
, так что также работает для отдельных элементов:
html = '''
<div class="rotation"><ol>
<li><a href="https://www.geeksforgeeks.org/array-rotation/">Program for array rotation1</a><li>
<li><a href="https://www.geeksforgeeks.org/array-rotation/">Program for array rotation2</a><li></ol></div>
'''
soup = BeautifulSoup(html)
{a['href']:a.text for a in soup.select('div.rotation li a[href]')}
Из:
{'https://www.geeksforgeeks.org/array-rotation/': 'Program for array rotation2'}
или с помощью list comprehension
, чтобы получить все варианты:
[{a['href']:a.text} for a in soup.select('div.rotation li a[href]')]
Из:
[{'https://www.geeksforgeeks.org/array-rotation/': 'Program for array rotation1'},
{'https://www.geeksforgeeks.org/array-rotation/': 'Program for array rotation2'}]