如何从属于相同标签和相同 class 的标签中抓取数据? BeautifulSoup

How do I scrape data from a tag belonging to the same label and the same class? BeautifulSoup

我有一个具有相同标签和相同名称的标签(属性)。 这是我的代码

first_movie.find('p',{'class' : 'sort-num_votes-visible'})

这是我的输出

<p class="sort-num_votes-visible">
<span class="text-muted">Votes:</span>
<span data-value="978272" name="nv">978,272</span>
<span class="ghost">|</span> <span class="text-muted">Gross:</span>
<span data-value="858,373,000" name="nv">8.37M</span>
</p>

我正在使用 span 标记此代码;

first_movie.find('span', {'name':'nv',"data-value": True})

978272 --> 输出

但我想用命名为 nv ($858.37M) 达到另一个值。 我的代码只得到这个值 (978,272) 因为标签名称彼此相等 (name = nv)

如果您达到 p 标签中的所有跨度,您可以像使用列表一样使用它们并使用索引达到最后一个 div。

movies = soup.find('p',{'class' : 'sort-num_votes-visible'})

my_movie = movies.findAll('span')

my_span = my_movie[3].text

你很接近。

尝试使用 find_all 然后抓取最后一个元素。

例如:

from bs4 import BeautifulSoup

html_sample = '''
<p class="sort-num_votes-visible">
<span class="text-muted">Votes:</span>
<span data-value="978272" name="nv">978,272</span>
<span class="ghost">|</span> <span class="text-muted">Gross:</span>
<span data-value="858,373,000" name="nv">8.37M</span>
</p>
'''

soup = (
    BeautifulSoup(html_sample, "lxml")
    .find_all("span", {'name':'nv',"data-value": True})
)
print(soup[-1].getText())

输出:

8.37M