python爬虫图片至本地

采用python 版本 3.6
urllib3 requests
使用pip install urllib3 导入需要用到的组件
pip install requests
使用jar

通过request()方法创建一个请求:

http = urllib3.PoolManager()
r = http.request(‘GET’, ‘http://tieba.baidu.com/p/2460150866’)
print(r.status) # 200
请求网址得到返回
在这里插入图片描述
此时返回的是页面的源码,类似于点击鼠标右键,查看源码得到的页面
在这里插入图片描述

对页面进行解析

def downloadImg(content):
    pattern = r'src="(.+?\.jpg)" pic_ext'
    m = re.compile(pattern)
    urls = re.findall(m, content)
   

把src= 开头的 .jpg 结尾的字符串刷选出来得到一个 url的集合

def saveImage(imglist,name):
    number = 1
    http = urllib3.PoolManager()

    for imageURL in imglist:
        print(imageURL)
        splitPath = imageURL.split('.')
        fileExt = splitPath.pop()
        fileName = name + "/" + str(number) + "." + fileExt #name是存储图片的路径,number作为图片名

        # 下载单个imageURL的图片
        r = http.request('GET', imageURL)
        data = r.data
        f = open(fileName, 'wb+')
        f.write(data)
        print(u'正在保存的一张图片为:%s', fileName)
        f.close()
        number += 1

根据 图片的url 把图片下载到保存到本地

完整代码

#  -*-  coding:utf-8  -*-
import urllib3
import requests
import re


def downloadImg(content):
    pattern = r'src="(.+?\.jpg)" pic_ext'
    m = re.compile(pattern)
    urls = re.findall(m, content)
    saveImage(urls,"d://tp")

def saveImage(imglist,name):
    number = 1
    http = urllib3.PoolManager()

    for imageURL in imglist:
        print(imageURL)
        splitPath = imageURL.split('.')
        fileExt = splitPath.pop()
        fileName = name + "/" + str(number) + "." + fileExt #name是存储图片的路径,number作为图片名

        # 下载单个imageURL的图片
        r = http.request('GET', imageURL)
        data = r.data
        f = open(fileName, 'wb+')
        f.write(data)
        print(u'正在保存的一张图片为:%s', fileName)
        f.close()
        number += 1

    print('\ntotal number of image:%s',(name,number))

#  忽略警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.
requests.packages.urllib3.disable_warnings()
# 一个PoolManager实例来生成请求, 由该实例对象处理与线程池的连接以及线程安全的所有细节
http = urllib3.PoolManager()
# 通过request()方法创建一个请求:
r = http.request('GET', 'http://tieba.baidu.com/p/2460150866')
print(r.status) # 200
# 获得html源码,utf-8解码
print(r.data.decode())

downloadImg(r.data.decode())

运行结果

去D盘查看
在这里插入图片描述

页面上的图片就全部被保存到本地了。

同理只需要有url就可以拿到各种页面的图片,或者你需要的内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值