Python 在localhost上托管图像的html页面,并通过web爬虫访问该页面,然后下载图像
我已经用python创建了一个web爬虫,它可以访问网页并从该网页下载图像。网络爬虫的代码为:Python 在localhost上托管图像的html页面,并通过web爬虫访问该页面,然后下载图像,python,Python,我已经用python创建了一个web爬虫,它可以访问网页并从该网页下载图像。网络爬虫的代码为: # ImageDownloader.py # Finds and downloads all images from any given URL. import urllib2 import re from os.path import basename from urlparse import urlsplit url = "http://www.yahoo.com" urlContent
# ImageDownloader.py
# Finds and downloads all images from any given URL.
import urllib2
import re from os.path
import basename from urlparse
import urlsplit
url = "http://www.yahoo.com"
urlContent = urllib2.urlopen(url).read()
# HTML image tag: <img src="url" alt="some_text"/>
imgUrls = re.findall('img.*?src="(.*?)"', urlContent)
# download all images
for imgUrl in imgUrls:
try:
imgData = urllib2.urlopen(imgUrl).read()
fileName = basename(urlsplit(imgUrl)[2])
output = open(fileName,'wb')
output.write(imgData)
output.close()
except:
pass
#ImageDownloader.py
#从任何给定URL查找并下载所有图像。
导入urllib2
从os.path导入re
从urlparse导入basename
导入URL拆分
url=”http://www.yahoo.com"
urlContent=urllib2.urlopen(url).read()
#HTML图像标记:
imgUrls=re.findall('img.*?src=“(.*?”),urlContent)
#下载所有图片
对于imgUrls中的imgUrl:
尝试:
imgData=urllib2.urlopen(imgUrl.read())
fileName=basename(urlspit(imgUrl)[2])
输出=打开(文件名为“wb”)
输出写入(imgData)
output.close()
除:
通过
我必须在课堂上展示一个演示,所以我用一些图像构建了一个简单的网页,并将其托管在localhost
上,但是我创建的网络爬虫没有访问html页面,也没有下载图像
有人能帮我从爬虫程序访问
localhost
上的html页面吗?你需要将脚本指向localhost,而不是“www.yahoo.com”
话虽如此,您可以做很多事情来改进该计划:
- 永远不要盲目地捕捉异常,然后什么也不做。让异常向上传播,或者做一些有用的事情
- 对于像这样的简单脚本,创建一个执行您的工作的函数,并从
块中调用它,如果uuuu name\uuuuu=='\uuuuuuu main\uuuu':
- 您可以使用BeautifulSoup,而不是使用正则表达式来查找图像,这将为您的程序添加一些结构,但这可能不是必需的
- 通过CSS包含图像是很常见的,因此也值得一看
img.+?src=(.+?)”
。我更改后,findall()
返回了一个不错的图像URL列表,并在我的目录中充满了图像
也就是说,一定要听从@knutin的建议,尤其是使用BeautifulSoup而不是regex。虽然这里的regex有效,但它可能不够健壮,无法处理您抛出的所有HTML。我最近一直在做一些HTML清理工作(没有图像那么简单)这绝对是一件轻而易举的事。在github上添加类似if[“.jpg”、“.png”等内容,在链接中查找图片并下载:)
是的,我试过了,也就是说,我试过将sript指向本地主机,然后指向它不工作。你说的“不工作”是什么意思?发生了什么?连接被拒绝?404?代码崩溃?浏览页面是否有效?如果你对端口进行telnet并发出GET/mypage,会发生什么?脚本被逐字复制