使用python的urllib库和正则表达式爬取

学习地址(自行base64解密):aHR0cDovL3BpYy5uZXRiaWFuLmNvbQ==

网站图片,支持批量下载。

(本文仅供学习交流,请勿商用,侵删)

1.可选择图片类型、下载那几页。

2.源代码

"""功能:批量下载网站图片时间:2019-5-18 16:14:01作者:倚窗听雨
"""
import urllib.request
import re
import osheaders = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36",
}
tempList = ["pic","netbian","com"]
ur = f"http://{'.'.join(tempList)}"
url_list = []#获取各类型图片url
def picture(url):res = urllib.request.Request(url,data=None,headers=headers)html = urllib.request.urlopen(res).read().decode('gbk')pic = re.findall(r'<div class="classify clearfix.+</div>',html)start = 0text = pic[0]for i in re.findall(r'<a ',pic[0]):a = re.search(r'<a ',text)end_a = re.search(r'</a>',text)href = url+text[a.start():end_a.end()].split('"')[1]title = text[a.start():end_a.end()].split('"')[3]d = {'href':href,'title':title}url_list.append(d)text = text[end_a.end():]#获取图片链接
def get_pic(url):res = urllib.request.Request(url,headers=headers)html = urllib.request.urlopen(res).read().decode('gbk')page = re.search(r'class="slh".+[\s].+',html).group().split('</a')[0].split('>')[-1]print('共',page,'页')start_page = int(input('下载起始页:'))end_page = int(input('下载到哪页:'))total = 0for p in range(start_page,end_page+1):if p ==1:url2 = url + 'index'+'.html'else:url2 = url + 'index_'+str(p)+'.html'print('\n',url2)res2 = urllib.request.Request(url2, headers=headers)html2 = urllib.request.urlopen(res2).read().decode('gbk')texts =re.findall(r'<ul class="clearfix".+[\s]*.+',html2)t = texts[0]print('准备下载第',p,'页图片......')#获取当前页的图片并下载for i in re.findall(r'<li>',t):start_li = re.search(r'<li>',t)end_li = re.search(r'</li>',t)href = ur+t[start_li.start():end_li.end()].split('"')[1]name = t[start_li.start():end_li.end()].split('b>')[-2][:-2]total += download(href,name)t = t[end_li.end():]print('\n下载完成,共下载{}张图片'.format(total))
#下载图片
def download(url,name):res = urllib.request.Request(url, headers=headers)html = urllib.request.urlopen(res).read().decode('gbk')down_url = re.search(r'<a href="" id="img">.+',html).group()down_url = ur + re.split('"',down_url)[5]try:data = urllib.request.urlopen(down_url,timeout=10).read()except Exception as e:print(e,'跳过此图片:'+name+'.jpg')return 0t = -1#img目录不存在自动创建if not os.path.exists('img'):os.makedirs('img')#该文件不存在时才下载(存储位置可自行修改,现在存在当前目录的img目录下)if not os.path.exists('img\\'+name+'.jpg'):with open('img\\'+name+'.jpg','wb')as f:f.write(data)print(name+'.jpg'+"\t\t下载成功")t = 1else:print(name + '.jpg' + "\t\t已存在")t = 0return t#主程序
def main():picture(ur)print('4k图片网欢迎您'.center(20,'*'))for i,v in enumerate(url_list):print("{}、{}".format(i+1,v['title']))while True:try:t = int(input('要下载的图片类型(序号):'))if t not in range(1,13):raise IndexErrorbreakexcept ValueError:print('请输入正确的序号!')except IndexError:print('请输入正确的序号!')get_pic(url_list[t-1]['href'])if __name__ == '__main__':main()

存储位置可自行修改,现在存在当前目录的img目录下

声明:初次学习爬虫,还有诸多不足,大神勿喷。

python爬虫批量下载图片相关推荐

  1. python 爬虫批量下载图片

    今天加班啊,苦啊!! 无聊,用python写了一个抓图片的爬虫,感觉很不错啊,哈哈 先贴上代码:(python 版本:2.7.9) __author__ = 'bloodchilde'import u ...

  2. python爬虫批量下载“简谱”

    python讨论qq群:996113038 导语: 上次发过一篇关于"python打造电子琴"的文章,从阅读量来看,我们公众号的粉丝里面还是有很多对音乐感兴趣的朋友的.于是,今天我 ...

  3. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

  4. 【爬虫实战项目】Python爬虫批量下载评书音频并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载评书音频并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这 ...

  5. 新一配:perl循环调用python爬虫批量下载喜马拉雅音频

    新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...

  6. python怎么批量下载图片_怎样批量下载在线图片?

    原标题:怎样批量下载在线图片? 大家早啊,我是云景,以前分享过很多关于批量下载图片的技巧,有使用插件程序的,有使用工具的. 之前也教过大家怎么使用F12开发者 今天给大家分享的是,使用Python来批 ...

  7. python multiprocessing 批量下载图片+tqdm

    紧接着我的上一篇博客:用tqdm可视化loop过程,我将继续探索multiprocessing 批量下载图片+tqdm 首先,是安装multiprocessing模块了,注意在python3下pip ...

  8. python爬虫 批量下载高清大图

    文章目录 前言 下载免费高清大图 下载带水印的精选图 代码与总结 前言 在上一篇写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!中,我们在未登录的情况下实现了图虫创意无水印高清小 ...

  9. 第二弹!python爬虫批量下载高清大图

    文章目录 前言 下载免费高清大图 下载带水印的精选图 代码与总结 前言 在上一篇写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!中,我们在未登录的情况下实现了图虫创意无水印高清小 ...

最新文章

  1. js form中的onsubmit和action
  2. 后台开发经典书籍--深入理解Nginx模块开发与架构
  3. 测试的时候数据库外键导致死锁_Oracle外键不加索引会引起死锁问题
  4. 论文浅尝 - JWS2020 | FEEL: 实体抽取和链接的集成框架
  5. 爬虫数据传入mysql_nodejs爬虫数据存入mysql
  6. 在Unity中添加图标
  7. Android Listener侦听的N种写法
  8. 文件夹无法删除详细解决方案(Windows版)
  9. 嵌入式C语言入门操作
  10. Xshell实现命令快速输入
  11. SPI转can芯片CSM300详解以及Linux驱动移植调试笔记
  12. 五猴分桃python_猴子分桃问题 | 学步园
  13. 如何将诸如Acrobat Reader DC等默认安装在C盘的软件,安装在非系统盘?
  14. 淘宝购物车页面测试用例
  15. AVS2实时编码器xavs2的运行
  16. pysot-toolkit--eval.py笔记(读取算法结果,根据评价指标计算结果并可视化)
  17. HMDB: a large human motion database人类动作视频数据集介绍及百度云下载链接分享
  18. WinCE USB驱动CDevice::EnterOperationalState函数相关
  19. 浅谈Web App前端设计原则
  20. JavaScript中的数组、函数中的方法、arguments

热门文章

  1. “数字孪生”语境下的城市:拼图模式与航向之争
  2. 基于UDP/IP协议的聊天室
  3. 【数学】拉格朗日乘子法(Lagrange Multiplier) 和KKT条件理解
  4. 安装anaconda时报错“failed to create menus”尝试各种解决方法
  5. 操作系统MSXML组件版本过低,导致启动失败的原因
  6. 海贝思蓝牙接收器Linux,特定场景使用测评,电视民工的海备思蓝牙X2发射接收器使用心得。...
  7. 京东暑期实习面经(已OC)
  8. 计算机T层,层螺旋计算机断层摄影术及T磁共振成像对-国家心血管病中心.PDF
  9. 第十五周 项目三 归并排序算法的改进
  10. elasticsearch7.1.1入门之集群的基础配置