使用beautifulsoup从img alt标签显示文本

时间:2013-12-18 03:14:43

标签: python beautifulsoup

到目前为止,我的代码是:

year = range(1958,2013)
randomYear = random.choice(year)
randomYear = str(randomYear)
page = range(1,5)
randomPage = random.choice(page)
randomPage = str(randomPage)
print(randomPage, randomYear)
url = 'http://www.billboard.com/artists/top-100/'+randomYear+'?page='+randomPage
url1 = urlopen(url)
htmlSource = url1.read()
url1.close()
soup = BeautifulSoup(htmlSource)
listm = soup.findAll('article', {'class': 'masonry-brick','style' : 'position;  absolute; top; 0px; left: 0px;'})
for listm in soup.findAll('div',{'class': 'thumbnail'}):
    for listm in soup.find('img alt')(''):
        print(listm)

我想要做的是获取img alt =''文字。我认为我有一点正确,但它没有显示任何内容。

2 个答案:

答案 0 :(得分:5)

要获取具有<img>属性的alt元素,您可以使用soup('img', alt=True)

print("\n".join([img['alt'] for img in div.find_all('img', alt=True)]))

不要为同一目的使用相同的名称,这会损害代码的可读性:

soup = BeautifulSoup(htmlSource)
articles = soup('article', 'masonry-brick',
                style='position;  absolute; top; 0px; left: 0px;')
for div in soup.find_all('div', 'thumbnail'):
    for img in div.find_all('img', alt=True):
        print(img['alt'])

注意:articles未使用。

  

我只需要一个img标签。我怎样才能做到这一点?

您可以使用.find()方法,按<img>获取一个<div>元素:

for div in soup.find_all('div', 'thumbnail'):
    img = div.find('img', alt=True)
    print(img['alt'])

答案 1 :(得分:0)

我认为你的意思是:

soup.find('img', alt='')

这将找到一个img标记,其属性alt的值为''(无)