web-dev-qa-db-ja.com

BeautifulSoupを使用して `img`タグから` src`属性を抽出します

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

私はbs4を使用していますが、a.attrs['src']を使用してsrcを取得することはできませんが、hrefを取得することはできます。私は何をすべきか?

11
iDelusion

BeautifulSoupを使用して、html imgタグのsrc属性を抽出できます。私の例では、htmlTextにはimgタグ自体が含まれていますが、これはurllib2とともにURLにも使用できます。

RLの場合

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']
22
Abu Shoeb

リンクには属性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'
6
mx0