5

私のコードは空の文字列しか返さないのですが、その理由がわかりません。

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

最初に見つかった画像のみを返すため、あまり優れた画像スクレーパーではありません。とはいえ、私の今の主な目標は、画像を見つけられるようにすることです。できません。

4

5 に答える 5

2

BeautifulSoupを使用してHTMLを解析することを検討してください。

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']
于 2012-10-17T15:04:10.650 に答える
2

これにはライブラリを使用する必要があり、そこにはいくつかありますが、表示されたコードを変更して質問に答えるには...

あなたの問題は、画像を見つけようとしていることですが、画像は<a ...>タグを使用していません。彼らは<img ...>タグを使用します。次に例を示します。

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

あなたがすべきことは、あなたのstart = page.find('<a img=')行をstart = page.find('<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
于 2012-10-17T15:00:10.450 に答える
0

ルビーによる画面スクレイピングに関する記事: http : //www.igvita.com/2007/02/04/ruby-screen-scraper-in-60-seconds/画像をスクレイピングするのではなく、良い記事であり、役立つ可能性があります。

于 2012-10-17T14:57:12.013 に答える
0

役立つかもしれないいくつかの指示:

  1. Google Chrome を使用します。マウスを画像の上に置き、右クリックします。「要素の検査」を選択します。これにより、画像の近くに html が表示されるセクションが開きます。

  2. Beautiful Soup を使用して 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
    
于 2012-10-17T15:08:30.887 に答える
0

この方法で画像情報を抽出するのは得策ではありません。あなたの知識と何か新しいことを学ぶ動機に応じて、いくつかのより良いオプションがあります。

于 2012-10-17T14:59:57.503 に答える