5

我对美味的汤如何起作用感到困惑,当你想螃蟹一个标签的孩子时。所以,我有以下 HTML 代码

<div class="media item avatar profile">
<a href="http://..." class="media-link action-medialink">
<img class="media-item-img" src="http://...jpeg" alt="name" title="name" width="150" height="200">
</a>
</div>    

我想获取 src 标签。我正在使用以下代码:

soup = BeautifulSoup(file_)
for x in soup.find('div', attrs={'class':'media item avatar profile'}).findNext('img'):
    print x 

这将打印整个 img 标签。我如何只选择 src ?

谢谢你。

4

3 回答 3

5

src是标签的一个属性。获得标签后,像访问字典键一样访问属性;您只找到了a标签,因此您也需要导航到包含的img标签:

for x in soup.find_all('div', attrs={'class':'media item avatar profile'}):
    print x.a.img['src']

您使用的代码findNext()返回一个标签对象;循环给你孩子,对象x也是如此img。我将其更改为更直接和更清晰。x现在是div, 我们直接导航到第一个a包含的img标签。

于 2013-04-10T07:55:44.203 回答
3

我想你会想要这样的东西:

soup.find('div', attrs={'class':'media item avatar profile'}).a.img['src']

In [1]: from bs4 import BeautifulSoup

In [2]: html = """\
   ...: <div class="media item avatar profile">
   ...: <a href="http://..." class="media-link action-medialink">
   ...: <img class="media-item-img" src="http://...jpeg" alt="name" title="name" width="150" height="200">
   ...: </a>
   ...: </div>"""

In [3]: soup = BeautifulSoup(html)

In [4]: soup.find('div', attrs={'class':'media item avatar profile'}).a.img['src']
Out[4]: 'http://...jpeg'
于 2013-04-10T08:02:26.087 回答
0

findNext返回与给定条件匹配并出现在文档中给定标签之后的第一个项目。请注意,这意味着它返回的任何标签都不能保证是给定标签的标签(例如标签的子div标签。)

用于findChildren限制给定标签的孩子:

import BeautifulSoup as bs

file_ = '''<html>
<div class="media item avatar profile">
<a href="http://..." class="media-link action-medialink">
<img class="media-item-img" src="http://...jpeg" alt="name" title="name" width="150" height="200">
</a>
</div>  
</html>
'''
soup = bs.BeautifulSoup(file_)
for x in soup.find(
        'div', attrs={'class':'media item avatar profile'}).findChildren('img'):
    print(x['src'])

产量

http://...jpeg
于 2013-04-10T08:06:43.013 回答