python爬虫爬取网上的照片

                这里写一个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 '出错了'

       可以看一下结果:
        再看一下我们建立文件夹中的文件:

      开打时发现出现问题,于是尝试用Notepad++打开:

         
          这个结果表明,我们爬取的网站对爬虫是拒绝访问的,服务器一般是服务人的而非爬虫,一些网站可能会处于安全等一系列因素的考虑,从而拒绝爬虫的访问,但是我们可以改变下面的语句
 r=requests.get(url)  
从而做到成功访问。我们可以看看我们访问国家地理网站时给国家地理发送的信息:
            

          从以上返回信息可看出,我们访问国家地理网站时就告诉该网站我们是爬虫,而非浏览器。为了成功访问,我们可以改变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,表示成功爬取到了。我们再看看我们建立目录中保存的文件:
       
         

                                   程序成功运行了!!!



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值