python爬虫爬取网上的照片

时间:2021-10-08 05:05:08

                这里写一个python爬虫爬取国家地理上的一张图片

        最近在网上刚学了python爬虫爬取网上的图片,所以将其记录下来。有时我们在网页上看到的图片是就是一个文件,所以可以通过爬虫爬取下来,保存到电脑之中。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import os
url='http://image.nationalgeographic.com.cn/2017/0309/20170309042607837.jpg'
root="D://picture//"#建立一个目录,可以将图片保存到其中
path=root+url.split('/')[-1]#将图片的原名截图下来
try:
if not os.path.exists(root):#检查一下我们建立的目录是本就否存在
os.mkdir(root)#如果不存在建立一个目录
if not os.path.exists(path):
r=requests.get(url)
print r.status_code#打印状态码
with open(path,'wb') as f:#打开目录,并将文件写入其中
f.write(r.content)
f.close#关闭文件
print("文件保存成功")
except:
print '出错了'

       可以看一下结果:
python爬虫爬取网上的照片         再看一下我们建立文件夹中的文件: python爬虫爬取网上的照片
      开打时发现出现问题,于是尝试用Notepad++打开: python爬虫爬取网上的照片
                    这个结果表明,我们爬取的网站对爬虫是拒绝访问的,服务器一般是服务人的而非爬虫,一些网站可能会处于安全等一系列因素的考虑,从而拒绝爬虫的访问,但是我们可以改变下面的语句
 r=requests.get(url)  
从而做到成功访问。我们可以看看我们访问国家地理网站时给国家地理发送的信息:
            python爬虫爬取网上的照片
          从以上返回信息可看出,我们访问国家地理网站时就告诉该网站我们是爬虫,而非浏览器。为了成功访问,我们可以改变User-agent的值,让该网站以为是浏览器的访问,这样便可成功访问。
          改变的总代码为:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import os
url='http://image.nationalgeographic.com.cn/2017/0309/20170309042607837.jpg'
root="D://picture//"#建立一个目录,可以将图片保存到其中
path=root+url.split('/')[-1]#将图片的原名截图下来
kv={'user-agent':'Mozilla/5.0'}#建立字典,改变user-agent的参数
try:
if not os.path.exists(root):#检查一下我们建立的目录是本就否存在
os.mkdir(root)#如果不存在建立一个目录
if not os.path.exists(path):
r=requests.get(url,headers=kv)
print r.status_code#打印状态码
with open(path,'wb') as f:#打开目录,并将文件写入其中
f.write(r.content)
f.close#关闭文件
print("文件保存成功")
except:
print '出错了'

       我们可以发现返回的状态码为200,表示成功爬取到了。我们再看看我们建立目录中保存的文件:
                 python爬虫爬取网上的照片
                                   程序成功运行了!!!