python爬取图片

先上代码:

from urllib.request import Request, urlopen, urlretrieve
from fake_useragent import UserAgent
import time
import redef get_html(rul):# 设置请求头headers = {'User-Agent': UserAgent().random}request = Request(rul, headers=headers)response = urlopen(request)info = response.read().decode()return infodef main():n = int(input('请输入要下载的页数:'))start_time = time.time()for j in range(1, n+1):if j == 1:rul = get_html('http://sc.chinaz.com/tupian/xingganmeinvtupian.html')else:rul = get_html('http://sc.chinaz.com/tupian/xingganmeinvtupian_%s.html' % j)regex = re.compile(r'http://pic\d?.sc.chinaz.com/Files/pic/pic9/\d{,6}/[az]+pic\d{,5}_s.jpg')img = regex.findall(rul)for i in range(len(img)):filename = 'D:\python_work\爬虫\图片\第' + str(j) + '页第' + str(i+1) + '张图片.jpg'url = img[i]urlretrieve(url, filename)print('第' + str(j) + '页第' + str(i+1) + '张图片下载成功')end_time = time.time()spend_time = round(end_time - start_time, 2)print('程序运行', end='')print(spend_time, end='')print('秒')if __name__ == '__main__':main()

http://sc.chinaz.com/该网站为例,打开首页如图:
随便选个标签 ,这里我选的“性感美女”:
地址栏显示地址为:http://sc.chinaz.com/tupian/xingganmeinvtupian.html,这里是第一页的地址栏,浏览到第二页时如下:显示地址栏为:http://sc.chinaz.com/tupian/xingganmeinvtupian_2.html,相比第一页网址后面多了个_2,继续往后面浏览发现网址依次是_3 ,_4,_5…,但是尝试按照这个规律打开第一页网址时sc.chinaz.com/tupian/meinvxiezhen_1.html,却报错了所以设置了个if判断语句,来把访问第一页和第二页及以后的页面区别开来,暂时想不出还有啥别的办法。
再来说趴的第一页图片。打开第一页后按F12打开浏览器的开发者模式,把网页刷新一下
刷新之后往下滑可以找到第一张图片的链接信息点击去可以发现图片的链接:http://pic2.sc.chinaz.com/Files/pic/pic9/202008/apic27331_s.jpg
再随便查看其他几张图片的链接地址:
http://pic2.sc.chinaz.com/Files/pic/pic9/202008/apic27281_s.jpg
http://pic.sc.chinaz.com/Files/pic/pic9/202008/apic27263_s.jpg
http://pic.sc.chinaz.com/Files/pic/pic9/201911/zzpic21548_s.jpg
http://pic.sc.chinaz.com/Files/pic/pic9/201708/zzpic5527_s.jpg
如此发现一些规律:
所以构造这样的正则表达式:
regex = re.compile(r'http://pic\d?.sc.chinaz.com/Files/pic/pic9/\d{,6}/[az]+pic\d{,5}_s.jpg')
之后就是一个for循环一次输出第几页的第几张图片,再用urlretrieve(url, filename)来保存下载的文件,最后加了个计时的功能,但是+只能拼接字符串,没法拼接小数,所以就用了三个print程序运行17.92秒这几个字拼接起来,有老哥有好的想法也可告知一下。运行程序后结果如下,先输入要下载的页数,我输入的4,(尝试下载第一页和前几页都没问题):
然后再查看下载好的文件:
看起来不错,哈哈,感觉奇怪的技能又增加了。。。

2021-10-5 更新:

import requests
from lxml import etree
import osdef htmlUrl(url):response = requests.get(url)response.encoding = response.apparent_encodinge = etree.HTML(response.text)return edef imgNames():names = e.xpath("//li/a/img[@alt]/@alt")return namesdef imgUrls():lists = []base_imgs = e.xpath("//li/a/img[contains(@src,'img')]/@src")  # https://pic.netbian.com +for i in base_imgs:n_url = 'https://pic.netbian.com' + ilists.append(n_url)return listsdef fileExit():if not os.path.exists('./美女'):os.mkdir('./美女')def download(names, urls):for i in range(len(names)):response = requests.get(urls[i]).contentpath = './美女/' + names[i] + '.jpg'try:with open(path,'wb') as f:f.write(response)print(names[i],'下载成功')except:print(names[i], '-------------下载失败')if __name__ == '__main__':fileExit()url = 'https://pic.netbian.com/4kmeinv/'e = htmlUrl(url)names = imgNames()urls = imgUrls()download(names, urls)

主要思路是:访问网页,按F12找到图片所在的链接,访问图片所在的链接,然后下载。

python爬取图片并且保存到本地指定文件夹内相关推荐

  1. python爬取图片并保存到本地

    Python爬取图片(你懂得) requests与Bs4 这两个模块是本文使用的主要模块,requests可以获取连接,bs4全名BeautifulSoup,是编写python爬虫常用库之一,主要用来 ...

  2. python爬取图片然后保存在文件夹中

    python爬取图片然后保存在文件夹中 直接上代码: import os import requests import redef getimg(soup,i):print('http:'+ soup ...

  3. matlab 指定路径保存图片_matlab批量保存图像至指定文件夹(revised) mkdir cd 等 | 学步园...

    把上一篇文章(点这里进入)修改了一下,可以批量保存至指定文件夹 使用到的关键语句为 mkdir创建文件夹 cd      获得当前work directory的字符串 cd  D:\test   进入 ...

  4. php下载图片保存到临时文件夹,57、PHP将上传到临时文件夹的文件移动到服务器指定文件夹内...

    本节用到的文件操作函数: 1.is_uploaded_file() 函数判断指定的文件是否是通过 HTTP POST 上传的. 2.move_uploaded_file() 函数将上传的文件移动到新位 ...

  5. 自动导入指定文件夹内的文献到 Endnote 中

    简介 最近正着手写一篇综述文章,来整体把握下自己研究领域的历史.方法.最新进展与趋势.由于需要对相关文献进行搜集.阅读和分类.庄小编使用 EndNote 来进行管理文献. 在使用较长时间后,整理了几个 ...

  6. java文件名大小_java 比较指定文件夹内.txt文件名的大小

    我写了一个程序:每过一定时间向指定文件夹内写一个按时间命名的.txt文件现在想实现最新的txt文件和最原先的txt文件内容比对但是不知道如何获得这两个文家的内容.packagetest;import. ...

  7. php遍历文件夹下文件内容_PHP递归遍历指定文件夹内的文件实现方法

    今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下. 发现php的文件夹函数好像没有提供遍历文件夹下的所有文 ...

  8. MATLAB 删除指定文件夹内的文件夹及多个子文件夹

    初入实验室,本科使用过一点matlab,遗忘的很快.索性用博客记录使用期间碰到的一些问题及解决方案. 文章目录 1. 问题来源 2. 代码 2.1. MATLAB Documentation - Ma ...

  9. python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹

    参考文章1:opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作 参考文章2:python-OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用 ...

最新文章

  1. vue调试工具如何使用_教你使用Vue.js的DevTools来调试vue项目
  2. Apache - AH00526 – server.crt
  3. 一个中等规模的七段数码数据库以及利用它训练的识别网络
  4. ubuntu按方向键出现abcd_Ubuntu Vi方向键[A [B [C [D问题解决
  5. Python模块学习
  6. 【JavaWeb】数据库基础复习
  7. kafka topic 一段时间不消费_全网最通俗易懂的 Kafka 入门
  8. 30.Qt的内存管理
  9. 热电偶校验仪使用说明_APSL311系列压力校验仪
  10. Linux复习-目录及其操作
  11. 线性表_顺序存储结构和链式存储结构的优缺点比较
  12. 在Python中安装meta模块
  13. 启动IDEA都会打开Licenses激活弹窗
  14. 微信公众号花式排版技巧分享
  15. 菩提本无树,明镜亦非台,本来无一物,何处惹尘埃
  16. 基于51单片机实现计算器功能
  17. 学计算机改变命运?有意思的考研调剂宣传
  18. 六、java版商城之一件代发设置 Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
  19. 制作移动端手机网站过程中的SEO优化方法技巧
  20. ipad 计算机连接网络设置方法,iPad Air怎么设置上网 苹果平板设置上网步骤【图文】...

热门文章

  1. 脚本报错 未结束的字符串常量 可能导致的原因
  2. 简短爆笑的小笑话集锦
  3. 第二届中国SaaS产业峰会-深圳站——挖掘SaaS的深度价值
  4. 产品经理如何做好行业研究?
  5. 2011年第七届“博创杯”全国大学生嵌入式设计大赛大赛命题
  6. 【Windows】IE11中添加网址到兼容性视图列表无法保存的解决方法
  7. 大写的服!84 岁的 iOS 程序员
  8. 2010年的两大收获,一个交易系统和一对龙凤胎
  9. Win7系统下载速度很快,上传速度超慢的解决
  10. wps中普通视图与打印预览内容显示不一致的解决方法