从 bs4.element.Tag 获取项目

Иль*_*ков 12 python beautifulsoup

我有 bs4.element.Tag 类型的元素

<a class="nav-link match-link-stats" href="/football/matches/match867851_Kalteng_Putra-Arema-online/" title="Stat"><i class="icon-match-link"></i></a>
Run Code Online (Sandbox Code Playgroud)

我想从这个元素中得到“/football/matches/match867851_Kalteng_Putra-Arema-online/”。怎么做?

Bra*_*mon 21

此答案假定您已经将该Tag元素作为对象。如果没有,请使用 KunduK 的回答。


您可以使用tag.get('href')tag['href']

>>> tag.get('href')
'/football/matches/match867851_Kalteng_Putra-Arema-online/'
>>> tag['href']
'/football/matches/match867851_Kalteng_Putra-Arema-online/'
Run Code Online (Sandbox Code Playgroud)

不同之处在于,tag.get('href')如果属性不存在,则返回 None ,而在这种情况下tag['href']会引发 a KeyError。这与 a 中的行为相同dict

完整示例:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<a class="nav-link match-link-stats" href="/football/matches/match867851_Kalteng_Putra-Arema-online/" title="Stat"><i class="icon-match-link"></i></a>')
>>> tag = soup.find('a')
>>> type(tag)
<class 'bs4.element.Tag'>
>>> tag.get('href')
'/football/matches/match867851_Kalteng_Putra-Arema-online/'
>>> tag['href']
'/football/matches/match867851_Kalteng_Putra-Arema-online/'
Run Code Online (Sandbox Code Playgroud)


Ron*_*uya 7

tag.findChild("a")['href']
Run Code Online (Sandbox Code Playgroud)

您获取“a”标签,然后获取“href”属性

  • 另外,旧的非常规名称不应该再使用——“findChild()”现在只称为“find()”。 (2认同)

Kun*_*duK 5

使用 css selecor 并获取属性 href

from bs4 import BeautifulSoup

data='''<a class="nav-link match-link-stats" href="/football/matches/match867851_Kalteng_Putra-Arema-online/" title="Stat"><i class="icon-match-link"></i></a>'''

soup= BeautifulSoup(data, 'html.parser')
print(soup.select_one('.match-link-stats')['href'])
Run Code Online (Sandbox Code Playgroud)

输出:

/football/matches/match867851_Kalteng_Putra-Arema-online/
Run Code Online (Sandbox Code Playgroud)