2017-05-15 146 views
0
<div class="someClass"> 
    <a href="href"> 
     <img alt="some" src="some"/> 
    </a> 
</div> 

我使用BS4和我不能使用a.attrs['src']得到src,但我可以得到href img`標籤src`屬性。我該怎麼辦?提取``從使用BeautifulSoup

+0

嗨,您的文章是有點難以閱讀 - 添加一些標點符號和線路中斷。報告您收到的確切錯誤消息以及您期望/想要發生的情況也會很有幫助。 – patrick

+0

@patrick我修改了這個問題 – iDelusion

+0

你爲什麼期望'a.attrs ['src']'工作?在所顯示的代碼段中,沒有包含'src'屬性的''標記。 – jwodder

回答

3

鏈接沒有屬性src您必須針對實際img標記。

import bs4 

html = """<div class="someClass"> 
    <a href="href"> 
     <img alt="some" src="some"/> 
    </a> 
</div>""" 

soup = bs4.BeautifulSoup(html, "html.parser") 

# this will return src attrib from img tag that is inside 'a' tag 
soup.a.img['src'] 

>>> 'some' 

# if you have more then one 'a' tag 
for a in soup.find_all('a'): 
    if a.img: 
     print(a.img['src']) 

>>> 'some' 
5

您可以使用BeautifulSoup來提取html img標籤的src屬性。在我的示例中,htmlText包含img標籤,但如果使用urllib2,它也可以使用URL。

對於網址

from BeautifulSoup import BeautifulSoup as BSHTML 
import urllib2 
page = urllib2.urlopen('http://www.youtube.com/') 
soup = BSHTML(page) 
images = soup.findAll('img') 
for image in images: 
    #print image source 
    print image['src'] 
    #print alternate text 
    print image['alt'] 

對於文本與img標籤

from BeautifulSoup import BeautifulSoup as BSHTML 
htmlText = """<img src="https://src1.com/" <img src="https://src2.com/" /> """ 
soup = BSHTML(htmlText) 
images = soup.findAll('img') 
for image in images: 
    print image['src']