2013-08-18 21 views
5

BeautifulSoupを使用してIMDbからHTMLページを取得していますが、そのページからポスター画像を抽出したいと思います。私は属性の1つに基づいてイメージを持っていますが、その中のデータを抽出する方法はわかりません。 - ミスだけのカップルあなたはほとんどそこにいるBeautifulSoupの属性に基づいて画像を抽出しています

url = 'http://www.imdb.com/title/tt%s/' % (id) 
soup = BeautifulSoup(urllib2.urlopen(url).read()) 
print("before FOR") 
for src in soup.find(itemprop="image"): 
    print("inside FOR") 
    print(link.get('src')) 

答えて

8

は、ここに私のコードです。 soup.find()はリストと一致する最初の要素を取得します。したがって、反復処理を行う必要はありません。要素を取得したら、辞書アクセスを使用してその属性(例:src)を取得できます。 id()は組み込み関数であり、それはそれらをマスクする悪い習慣だから、私はfilm_idからidを変更した

film_id = '0423409' 
url = 'http://www.imdb.com/title/tt%s/' % (film_id) 
soup = BeautifulSoup(urllib2.urlopen(url).read()) 
link = soup.find(itemprop="image") 
print(link["src"]) 
# output: 
http://ia.media-imdb.com/images/M/[email protected]@._V1_SY317_CR0,0,214,317_.jpg 

:ここに作り直したバージョンです。

5

あなたの例は非常に近いと思います。 find()の代わりにfindAll()を使用する必要があります。繰り返しを行うと、srcからlinkに切り替わります。以下の例では、私はtag

このコードはBeautifulSoup4と私のために働いているにそれを切り替える:

url = 'http://www.imdb.com/title/tt%s/' % (id,) 
soup = BeautifulSoup(urllib2.urlopen(url).read()) 
print "before FOR" 
for tag in soup.findAll(itemprop="image"): 
    print "inside FOR" 
    print(tag['src']) 
関連する問題