Python中的图像抓取程序无法按预期运行

时间:2012-10-17 14:52:43

标签: python image

我的代码只返回一个空字符串,我不知道为什么。

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

它只返回它找到的第一个图像,所以它不是一个非常好的图像刮刀;那说,我现在的主要目标只是为了能够找到一个图像。我不能。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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']

答案 2 :(得分:0)

关于使用ruby进行屏幕抓取的文章:     http://www.igvita.com/2007/02/04/ruby-screen-scraper-in-60-seconds/ 它不是刮图像,但它是一篇好文章,可能有所帮助。

答案 3 :(得分:0)

以这种方式提取图像信息不是一个好主意。根据您的知识和学习新知识的动机,有更好的选择:

答案 4 :(得分: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