从 Python 中的 bs4.element.ResultSet 获取 "li" 中包含的文本和链接
Get text and links contained inside "li" from a bs4.element.ResultSet in Python
[<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
和link"https://www.geeksforgeeks.org/array-rotation/"
我如何使用 Python 做到这一点?
如果您只想提取一个 link,您可以使用:
link = soup.select_one('li a[href]')['href']
text = soup.select_one('li a[href]').text
print(link, text)
但要更通用,您可以 select 所有 <a>
,然后用 dict comprehension
迭代 ResultSet
以获得独特的 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'}]
[<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
和link"https://www.geeksforgeeks.org/array-rotation/"
我如何使用 Python 做到这一点?
如果您只想提取一个 link,您可以使用:
link = soup.select_one('li a[href]')['href']
text = soup.select_one('li a[href]').text
print(link, text)
但要更通用,您可以 select 所有 <a>
,然后用 dict comprehension
迭代 ResultSet
以获得独特的 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'}]