Python简单实现图片爬取功能

1. 需求

爬取贴吧的图片,保存在本地。

2. 实例

使用urllib模块请求网络,通过正则匹配图片网址。

# -*- coding: utf-8 -*-
import re   # re模块主要包含了正则表达式
import urllib.request
from urllib import request  # urllib模块提供了读取Web页面数据的接口

# 定义一个getHtml()函数
def getSuperHtmlCode(url):
    print('start-getsuperhtml')
    with request.urlopen(url) as f:
        data = f.read()
        print('Status:', f.status, f.reason)
        for k, v in f.getheaders():
            print('%s: %s' % (k, v))
        print('Data:', data.decode('utf-8'))
        return data

# 定义一个getHtml函数
def getHtml(url):
    print('start-gethtml')
    page = urllib.request.urlopen(url)  # urllib.request.urlopen()方法用于打开一个URL地址
    html = page.read()  # read()方法用于读取URL上的数据
    return html

# 图片下载
def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'  # 正则表达式,得到图片地址
    imgre = re.compile(reg)  # re.compile() 可以把正则表达式编译成一个正则表达式对象.
    html = html.decode('utf-8')  # python3
    imglist = re.findall(imgre, html)  # re.findall() 方法读取html 中包含 imgre(正则表达式)的数据
    # 把筛选的图片地址通过for循环遍历并保存到本地
    # 核心是urllib.request.urlretrieve()方法,直接将远程数据下载到本地,图片通过x依次递增命名
    x = 0
    for imgurl in imglist:
        urllib.request.urlretrieve(imgurl, 'G:\download\%s.jpg' % x)
        x += 1

if __name__ == '__main__':
    html = getSuperHtmlCode("https://tieba.baidu.com/p/2555125530")
    print('html:', html)
    print(getImg(html))

运行结果:

参考资料 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值