Python爬取网页中图片,附上完整代码

文章目录

  • Python爬取网页中图片,附上完整代码
    • 概述
    • 完整代码

概述

批量爬取数据,请遵循robots协议及相关网站协议及说明。
本代码仅供有需要爬取网页中图片的人参考,请不要从事违法行为。
本代码测试于:2021-01-04 14:04:14
说明:

  1. 本代码使用的python3.8
  2. 本代码只能爬取静态页面中的图片,即img标签是写到html静态页面里面的,而不是后期通过vue等js框架渲染的(判断是否满足条件:请右键查看代码源文件,看源码内是否存在所需要爬取的img标签src路径)。
  3. 本代码的正则表达式是依据特定的昵图网图片网页写的,爬取其他网页需自行修改
  4. 本代码用到两个外部库requests和os,一个内部库re
  5. 本代码在本人mac book上运行的,请自行改为自己的存储路径,window系统请自行查询路径注意事项
  6. 本代码是在昵图网查询的关键词“美女”,得出的结果
  7. 代码流程:获取页面内容 --> 从内容中用正则获取图片列表 --> 将每个元素作为图片保存到本地

完整代码

import requests
import re
import os
# 存储图片的路径
root = "/Users/ha/Downloads/nipic/"
# 昵图网图片的url
url = 'http://soso.nipic.com/'
# 参数
params = {"q": "美女"}
# 这里直接排除无用的图片,只保留我们需要的图片,这个正则是通过人工查看页面结构看到的
rule = re.compile(r'http://pic\S+?/pic/\d+?/\S+?.jpg')
# 获取页面内容
def getHTMLText(url, params):headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}try:r = requests.get(url,  timeout=30,  params=params,  headers=headers)r.raise_for_status()# r.encoding = r.apparent_encoding  通过内容分析编码,比较慢,如果知道了encoding 直接写死就好了r.encoding = 'UTF-8'print(r.text)return r.textexcept:return '获取页面失败'# 从页面内容中解析需要的内容
def parsePage(html, rule):try:imgs = re.findall(rule,  html)return imgsexcept:return '解析图片失败'
# 批量获取图片
def getImgs(imgs):for img in imgs:getImg(img)# 获取单张图片,并保存到指定路径
def getImg(img):def getImg(img):name = img.split('/')[-1]file = root+nameprint(file)if not os.path.exists(file):r = requests.get(img)with open(file, 'wb') as f:f.write(r.content)f.close()print(name + ' 保存成功')else:print('文件已存在')try:if not os.path.exists(root):os.mkdir(root)getImg(img)except:print('爬取失败')def main():html = getHTMLText(url, params)imgs = parsePage(html, rule)print(imgs)print('共有 '+str(len(imgs))+' 张图片')getImgs(imgs)
main()

如果觉得有用,请点赞收藏让更多人的同行少走弯路,祝所有同行朋友,程序没bug!

Python3爬取网页中图片(2021-01-04 14:06:02),附上完整代码相关推荐

  1. python爬取图片-Python爬取网页中的图片(搜狗图片)详解

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...

  2. 【期末课设】python爬虫基础与可视化,使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载。

    1.大作业的内容 本要求使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载. 2.案例需求 要求采用虚拟浏览器等动态爬虫技术,完 ...

  3. python批处理实现爬取网页静态图片文件重命名图片统一修改大小等功能

    按照特定字符(此处选为字符'j')分割文档成多个小文档 def main():with open("dir/origin.txt","r") as f:temp ...

  4. python3爬取网页数据学习笔记——XPath篇

    数据来源网站:2016中国企业500强排行榜(完整名单)→买购网 (maigoo.com) 参考资料:python3 爬取网页表格例子_快乐糖果屋的博客-CSDN博客 右键数据部分,选择检查 观察到需 ...

  5. r语言html爬虫,如何用R语言爬取网页中的表格

    今天我们要讲怎么样用R写一个小的爬虫,来爬取网页中的表格.这里的网页指html页面.稍微百度一下大家就可以知道,html是一种高度结构化的文本标记语言.html表格所用的标签是 . 所以我们的思路大概 ...

  6. 用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)

    参考文章:https://www.cnblogs.com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只 ...

  7. python3爬取网页AJAX数据

    目前很多网站都使用ajax技术动态加载数据,和常规的网站不一样,数据时动态加载的,如果我们使用常规的方法爬取网页,得到的只是一堆html代码,没有任何的数据. Ajax是利用 JavaScript在保 ...

  8. python唯美壁纸_用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)

    参考文章:https://www..com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只是很久之前学过 ...

  9. 网络爬虫之Scrapy实战四:爬取网页下载图片

    在前面的章节中都介绍了scrapy如何爬取网页数据,今天介绍下如何爬取图片. 下载图片需要用到ImagesPipeline这个类,首先介绍下工作流程: 1 首先需要在一个爬虫中,获取到图片的url并存 ...

最新文章

  1. QSignalMapper的使用
  2. Bzoj2110--Wc2011Xor
  3. Oracle HowTo:如何解决Oracle10gR2 ORA-19554关于SBT_TAPE问题
  4. php动物书总结01-06
  5. 河内之塔算法_如何解决河内问题之塔-图解算法指南
  6. linux写永久路由命令,用route命令添加永久路由(示例代码)
  7. 怎么委婉地不让婆婆每天来我家?
  8. 从事 Java 20 年最终却败给了 Python,哭了!
  9. C#/winform 腾讯QQ注册
  10. python学习手册-python学习手册第5版pdf
  11. 计算机等级考试无纸化模拟软件(免费版)
  12. 【洛谷】P1878 舞蹈课
  13. Win10 - 打开资源管理器显示的不是磁盘
  14. php获取七牛上传token失效,上传文件到七牛时,bad token了怎么处理?
  15. java ext_ext下载及使用
  16. 最全大数据学习资源整理
  17. 记录下我磕磕碰碰的三个月找工作经历,不吃透都对不起自己
  18. 无人驾驶公司大全(原无人驾驶龙虎榜)
  19. iOS-仿网易云音乐控制器
  20. Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践

热门文章

  1. java 字符集升级_JAVA字符集
  2. 关于今天面试的一个有趣问题
  3. HLK-W801-LVGL8之源码移植
  4. 金融数据挖掘 第7章 第2节(3)英文文本分析处理
  5. 用python判断年份是否为闰年
  6. ini配置文件解析(C++)
  7. python:isdigit()、isalpha()、isalnum() 三个函数的区别和注意点
  8. 基于大数据的Android+SSM开发的手工艺品分享交易商城平台APP设计
  9. 三菱PLC串口通信的IO控制
  10. 五、ROS使用serial包进行串口通信