我的代码只返回一个空字符串,我不知道为什么。
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
它只会返回找到的第一个图像,所以它不是一个很好的图像刮取器;也就是说,我现在的主要目标是能够找到一个图像。我做不到。
发布于 2012-10-17 15:00:10
您应该使用一个库来实现这一点,并且有几个库,但是为了回答您的问题,请更改您向我们展示的代码……
您的问题是,您正在尝试查找图像,但是图像没有使用<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-17 15:04:11
考虑使用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']
发布于 2012-10-17 14:57:12
关于用ruby抓取屏幕的文章:http://www.igvita.com/2007/02/04/ruby-screen-scraper-in-60-seconds/它不是抓取图像,但它是一篇很好的文章,可能会有所帮助。
https://stackoverflow.com/questions/12937144
复制相似问题