㈠ 怎么样通过超链接下载图片
利用 file_get_contents 可以读取 网络上的 文件内容 并保存到 变量
然后在用 file_put_contents 保存到 本地就可以了,
如果要读取网络文件 需要 开启 allow_url_fopen 配置
file_put_contents 只有PHP5才能用
-------------------------
第2种 你可以用
fopen fread fwrite fclose 这个手册上有说明 速度要比上面的 快一些吧
--------------------------
第3种
你可以用 GD函数 , 首先要根据连接 获取 图片扩展名
然后选择 imagecreatefromjpeg imagecreatefrompng imagecreatefromgif
其中一个函数 来 读取 图片,
这样好处是 还可以进行 格式转换, 缩略图等等
最后用imagepng imagejpeg imagegif 保存就可以了
---------------------------------
最后在加一句 , 代码中获取图片 路径后 一定要 自己完善一下
必须加上 http://网址/.... 等 这个要根据 网页路径和 图片路经 来判断了
㈡ windows python网络下载文件存在哪里
这个下载会默认放置在与你当前脚本相同的目录下面的。
比如你的脚本位置 : d:/spider/a.py
那么你下载的文件 : d:/spider/**.*
要是没有的话,说明没有下载成功。
㈢ Python3.xx中写爬虫,下载图片除了urlretrieve方法,还有什么库的什么方法呢
Part 1. urllib2
urllib2是Python标准库提供的与网络相关的库,是写爬虫最常用的一个库之一。
想要使用Python打开一个网址,最简单的操作即是:
your_url = "http://publicdomainarchive.com/"html = urllib2.urlopen(your_url).read()12
这样所获得的就是对应网址(url)的html内容了。
但有的时候这么做还不够,因为目前很多的网站都有反爬虫机制,对于这么初级的代码,是很容易分辨出来的。例如本文所要下载图片的网站http://publicdomainarchive.com/,上述代码会返回HTTPError: HTTP Error 403: Forbidden错误。
那么,在这种情况下,下载网络图片的爬虫(虽然只有几行代码,但一个也可以叫做爬虫了吧,笑),就需要进一步的伪装。
要让爬虫伪装成浏览器访问指定的网站的话,就需要加入消息头信息。所谓的消息头信息就是在浏览器向网络服务器发送请求时一并发送的请求头(Request Headers)信息和服务器返回的响应头(Response Headers)信息。
例如,使用FireFox打开http://publicdomainarchive.com/时所发送的Request Headers的部分内容如下:
Host:"publicdomainarchive.com/"User-Agent:"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"...1234
还有一些其他属性,但其中伪装成浏览器最重要的部分已经列出来了,即User-Agent信息。
要使用Headers信息,就不能再仅仅向urlopen方法中传入一个地址了,而是需要将HTTP Request的Headers封装后传入:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}req = urllib2.Request(url = url, headers = headers)content = urllib2.urlopen(req).read()123
这样,就获得了网站的html内容。
接下来,就需要从html去获取图片的链接。
Part 2. HTMLParser
HTMLParser是Python提供的HTML解析库之一。
但Python提供的这个类中很多方法都没有实现,因而基本上这个库只负责进行解析,但解析完了什么都不做。所以如果需要对HTML中的某些元素进行加工的话,就需要用户自己去实现其中的一些方法。本文仅实现其中的handle_starttag方法:
class MyHTMLParser(HTMLParser): #继承HTMLParser类
def __init__(self): #初始化
HTMLParser.__init__(self) def handle_starttag(self, tag, attrs):
#参数tag即由HTMLParser解析出的开始标签,attrs为该标签的属性
if tag == "img": #下载图片所需要的img标签
if len(attrs) == 0: pass
else: for (variable, value) in attrs: #在attrs中找到src属性,并确定其是我们所要下载的图片,最后将图片下载下来(这个方法当然也有其他的写法)
if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:
pic_name = value.split('/')[-1] print pic_name
down_image(value, pic_name)123456789101112131415
Part 3. 下载图片
从handle_starttag方法中,我们已经获得了图片的url,那么,最后一步,我们要下载图片了。
当然,要获得网络上的图片,自然也需要向服务器发送请求,一样需要用到urllib2这个库,也需要用到上面所用到的请求头。
以下是down_image()方法的主要代码:
binary_data = urllib2.urlopen(req).read()
temp_file = open(file_name, 'wb')
temp_file.write(binary_data)
temp_file.close()1234
因为这次打开的网址是个图片,所以urllib2.urlopen(req).read()所获取的就是图片的数据,将这些数据需要以二进制的方式写入本地的图片文件,即将图片下载下来了。
因为图片的url的最后一部分是图片的名字,所以可以直接用做本地的文件名,不用担心命名冲突,也不用担心后缀不符,很是方便。
Part 4. getFreeImages.py
这个下载图片的脚本的完整代码如下:
import urllib2,osfrom HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self) #self.links = {}
def handle_starttag(self, tag, attrs):
#print "Encountered the beginning of a %s tag" % tag
if tag == "img": if len(attrs) == 0: pass
else: for (variable, value) in attrs: if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:
pic_name = value.split('/')[-1] print pic_name
down_image(value, pic_name)def down_image(url,file_name):
global headers
req = urllib2.Request(url = url, headers = headers)
binary_data = urllib2.urlopen(req).read()
temp_file = open(file_name, 'wb')
temp_file.write(binary_data)
temp_file.close()if __name__ == "__main__":
img_dir = "D:\\Downloads\\domain images"
if not os.path.isdir(img_dir):
os.mkdir(img_dir)
os.chdir(img_dir) print os.getcwd()
url = ""
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
all_links = []
hp = MyHTMLParser() for i in range(1,30):
url = 'http://publicdomainarchive.com/public-domain-images/page/' + str(i) + '/'
req = urllib2.Request(url = url, headers = headers)
content = urllib2.urlopen(req).read()
hp.feed(content)
hp.close()041424344454647484950
㈣ python获取图片保存本地,图片放在div里,看了半天xhr没有发现,然后网站上有一个下载按钮,该怎么闹了
用爬虫爬取图片的时候,最好以网页源码为准,因为有时网页源码跟你在开发者模式里面看到的不一样。先把用 python 把网页源码保存成文件,再找找自己要的目标在哪里。
㈤ 如何获得一个网站下的所有图片
在打开的网页中,找到“文件”菜单,再后"另存为" 类型要全部, 保存后去保存的地方找images文件夹,里面就有图片
㈥ python 网络爬虫,怎么自动保存图片
defdownload_poster_image(movie):#定义一个下载图片函数
src=movie#取出它的url
r=requests.get(src)#去获取这个url
fname=url.split('/')[-1]#从url里面获取这个文件名
withopen(fname,'wb')asf:#应答的内容写进去并且使用二进制
f.write(s.content)
movie['poster-path']=fname
res=requests.get(url)
img_url=res.xpath('//img[@class="q-img-item"]/@src')
movie=img_url
download_poster_image(movie)#执行函数
㈦ c# 写的爬虫 怎么可以把从任何网站抓取的任何格式的图片存储本地
与楼上意见相反。别说任何格式的图片了,就是任何格式的任何文件,那不也是一样的抓和储存?不就是普通的下文件吗?以byte[]的形式读出来写到文件里呗。爬虫的重点从来不是下载的部分,这部分是框架能完成的;只有那些框架做不了的,要你自己写的地方,才是重点。
㈧ Heritrix测试爬虫,为什么没有mirror文件夹呢,在哪儿看下载下来的图片之类的文件jobs里面的文件是
将ARCWriterProcessor这项,修改成MirrorWriterProcessor才会保存为镜像文件的,选择完之后点击Add,这时在看这个选项,发现多了一个mirror write processor,把没用掉的remove掉即可,
㈨ 爬虫爬的图片在哪儿
在这行代码里面的路径
with open( '在这里', 'wb') as f:
里你可以指定路径,如:D:\图片 \文件名.后缀名 那么就会存储在D盘的图片文件夹里面
不写路径那么就在你当前py文件里面
㈩ 使用Python爬虫下载图片,得到的图片不显示
你需要检查一下你的结果,看看是否请求成功了。可能服务器返回的并不是一个图片,但是你强制给他写入到图片格式文件中了,所以没办法显示。
你可以通过输出response或者使用抓包软件来检查。