2012-10-17 14 views
5

私のコードは空の文字列を返すだけです。理由はわかりません。Pythonの画像スクレイピングプログラムが意図したとおりに機能しない

import urllib2 

def getImage(url): 
    page = urllib2.urlopen(url) 
    page = page.read() #Gives HTML to parse 

    start = page.find('<a img=') 
    end = page.find('>', start) 

    img = page[start:end] 

return img 

それだけで最初に見つかったイメージを返しますので、それは非常に良好な画像スクレーパーではありません。それは、私の主な目標は今、単にイメージを見つけることができるということです。私はできない。ルビーでこする画面上

答えて

0

このように画像情報を抽出することはお勧めできません。より良いオプションは、新しい何かを学ぶためにあなたの知識とあなたの意欲に応じて、severalyあります

+0

は便利なスキルですが、それはいかなる方法でこするウェブのための「より良いオプション」ではありません。 – root

2

あなたが画像を検索しようとしていることを

あなたの問題がある...あなたは、このためのライブラリを使用する必要があり、いくつかはそこにありますが、あなたは私たちを示したコードを変更することによって、あなたの質問に答えるために画像は<a ...>タグを使用しません。彼らは<img ...>タグを使用します。次に例を示します。

def getImage(url): 
    page = urllib2.urlopen(url) 
    page = page.read() #Gives HTML to parse 

    start = page.find('<img ') 
    end = page.find('>', start) 

    img = page[start:end+1] 
    return img 
+0

私はちょうどhttp://yahoo.comで私の提案された 'getImage'関数を試して、これを得ました:' ' – bohney

2

は、あなたのHTMLを解析するためにBeautifulSoupの使用を検討してください:

from BeautifulSoup import BeautifulSoup 
import urllib 
url = 'http://www.google.com' 
html = urllib.urlopen(url).read() 
soup = BeautifulSoup(html) 
for img in soup.findAll('img'): 
    print img['src'] 
0

一部の命令あなたは何をすべき

<img src="smiley.gif" alt="Smiley face" height="42" width="42"> 

はそうのようなstart = page.find('<img ')にごstart = page.find('<a img=')行を変更しています助けになるかもしれない:

  1. Google Chromeを使用します。画像の上にマウスを置いて右クリックします。 「要素の検査」を選択します。それはあなたが画像の近くにhtmlを見ることができるセクションを開きます。

  2. 利用美しいスープは、HTML解析する:正規表現を使用する方法を知って

    from BeautifulSoup import BeautifulSoup 
    
    request = urllib2.Request(url) 
    response = urllib2.urlopen(request) 
    html = response.read() 
    soap = BeautifulSoap(html) 
    imgs = soup.findAll("img") 
    items = [] 
    for img in imgs: 
        print img['src'] #print the image location 
        items.append(img['src']) #store the locations for downloading later 
    
関連する問題