我的代码只返回一个空字符串,我不知道为什么。
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 :(得分: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)
以这种方式提取图像信息不是一个好主意。根据您的知识和学习新知识的动机,有更好的选择:
http://scrapy.org/是一个非常好的框架,用于从网页中提取数据。因为看起来你是初学者,所以可能有点矫枉过正。
了解正则表达式以提取信息:http://docs.python.org/library/re.html和Learning Regular Expressions
使用http://www.crummy.com/software/BeautifulSoup/解析page.read()
结果中的数据。
答案 4 :(得分:0)
可能有帮助的一些说明:
使用Google Chrome。将鼠标放在图像上并单击鼠标右键。选择“检查元素”。这将打开一个部分,您将能够在图像附近看到html。
使用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