Python学习笔记:利用爬虫自动保存图片
兴趣才是第一生产驱动力。
Part 1
起先,源于对某些网站图片浏览只能一张一张的翻页,心生不满。某夜,冒出一个想法,为什么我不能利用爬虫技术把想看的图片给爬下来,然后在本地看个够。
由此经过一番初尝试发现,MD一个破图片网站还做什么反爬技术,还做得这么好,害我搞了一个晚上都搞不定,百思不得其解。
此事暂搁置一段落。
(附图片网站:妹子图)
Part 2
今日,又发现另一网站,遂再次进行测试一番,美名曰:练习技术。
此篇仅记录如何保存图片,而不是涉及网页爬取、正则解析图片链接识别等,后续再做补充。
- 第一次尝试,直接请求图片,保存
import urllib.request
import time
for i in range(1,6): # 循环次数根据图片数确定
try:
f = open('C:\\Users\\Hider\\Desktop\\test\\de42b_0'+ str(i) + '.jpg', 'wb')
url = 'https://media.kymari.vip/images/2019/10/11/de42b_00' + str(i) + '.jpg'
f.write((urllib.request.urlopen(url)).read())
print(url)
f.close()
except Exception as e:
print(str(i) +" error")
i += 1
time.sleep(5) # 休眠5秒
print("All Done!")
发现能爬取,不过试过几次,都是爬取了差不多10张图就爬不动了。看来还是有反爬措施的,添加了time.sleep(5)每次休眠几秒钟,再请求,发现还是不行,继续改进。
- 第二次尝试,通过添加
headers伪装浏览器进行请求
import time
import requests
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
for i in range(1,6):
try:
url = 'https://media.kymari.vip/images/2019/08/27/a5359_00' + str(i) + '.jpg'
r = requests.get(url)
with open('C:\\Users\\Hider\\Desktop\\test\\a5359_00'+ str(i) + '.jpg', 'wb') as f:
f.write(r.content)
print(url)
f.close()
except Exception as e:
print(str(i) +" error")
i += 1
time.sleep(10)
print("All Done!")
终于可以正常的把一整个网页的图片给保存下来了,done!
哭笑不得的是,网站是开发者可能也是技术一般,没有做好反爬防护措施,针对付费VIP才能观看的部分网页图片,给出了预览图,因此通过发现图片命名规律,直接就把后续付费的部分图片给爬下来,大肆观看。
(附图片网站:素人吧)
Part 3
此文只是针对某个具体网页,图片链接已经通过浏览器F12人工获取,判断规则,再进行一个循环保存而已,实际上,并不算一个“真正的爬虫”,后续再通过其他网站进行练练手,完整的把整个爬取流程给学习完整。
- 发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers、data等信息,然后等待服务器响应。这个请求的过程就像我们打开浏览器,在浏览器地址栏输入网址:
www.baidu.com,然后点击回车。这个过程其实就相当于浏览器作为一个浏览的客户端,向服务器端发送了 一次请求。 - 获取响应内容:如果服务器能正常响应,我们会得到一个Response,Response的内容便是所要获取的内容,类型可能有HTML、Json字符串,二进制数据(图片,视频等)等类型。这个过程就是服务器接收客户端的请求,进过解析发送给浏览器的网页HTML文件。
- 解析内容:得到的内容可能是HTML,可以使用正则表达式,网页解析库进行解析。也可能是Json,可以直接转为Json对象解析。可能是二进制数据,可以做保存或者进一步处理。这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。
- 保存数据:保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件。这就相当于我们在浏览网页时,下载了网页上的图片或者视频。
Python学习笔记:利用爬虫自动保存图片的更多相关文章
- 吴裕雄--python学习笔记:爬虫基础
一.什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.URL管理器.网页下载器.网 ...
- python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: F ...
- Python学习笔记之爬虫
爬虫调度端:启动爬虫,停止爬虫,监视爬虫运行情况 URL管理器:对将要爬取的和已经爬取过的URL进行管理:可取出带爬取的URL,将其传送给“网页下载器”网页下载器:将URL指定的网页下载,存储成一个字 ...
- Python学习笔记——与爬虫相关的网络知识
1 关于URL URL(Uniform / Universal Resource Locator):统一资源定位符,用于完整地描述Internet上网页和其他资源的地址的一种标识方法 URL是爬虫的入 ...
- 吴裕雄--python学习笔记:爬虫包的更换
python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...
- 吴裕雄--python学习笔记:爬虫
import chardet import urllib.request page = urllib.request.urlopen('http://photo.sina.com.cn/') #打开网 ...
- Python学习笔记_爬虫数据存储为xlsx格式的方法
import requests from bs4 import BeautifulSoup import openpyxl wb=openpyxl.Workbook() sheet=wb.active ...
- golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍
golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...
- 【Python学习笔记之二】浅谈Python的yield用法
在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...
随机推荐
- curl 使用笔记
一.使用案例 curl -H "cookie:userName=shangyy" www.baidu.com 二.使用 1.从Netscape的网页服务器上获得该网站的主页: cu ...
- Android数据存储的方式
1. 内部存储 * 路径: /data/data/包名/ * cache用于存储临时文件,系统内存不足时,清除缓存数据 * files用于存储重要的文件,要用户手动在应用程序列表清 ...
- 深度学习之加载VGG19模型分类识别
主要参考博客: https://blog.csdn.net/u011046017/article/details/80672597#%E8%AE%AD%E7%BB%83%E4%BB%A3%E7%A0% ...
- spring cloud之Eureka
Region 表示aws的地理位置,一个region有多个awailability zone,各region间完全隔离.这种方式实现最大的容错和稳定性. spring cloud 默认使用的regio ...
- JAVA正则表达式 Pattern和Matcher类
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...
- ELK故障处理,不知道成功否
上周?还是上上周??发现ELK的数据都没有更新了,考虑到这个系统目前不重要,就没有理会.今日再次登陆,发现没有数据更新了!!! system overview 没有主机,没有数据. 登陆系统检查状态, ...
- DRF之APIView源码解析
目录 Django项目中的代码如下 APIView源码解析 源码解析总结 Django项目中的代码如下 urls.py中: from django.conf.urls import url from ...
- python基础学习19,01
听说python入门很容易,所以想试试对我这个零基础会不会很友好呢.做随笔也顺便督促自己不要轻易放弃学习. #登录接口 print("请输入用户名密码") _username = ...
- RAID冗余磁盘阵列的创建
RAID 0 :条带化,数据被拆分到多个驱动中,写速度最快,但并没有数据镜像或校验信息. RAID 1 :镜像化,完全磁盘镜像,在独立磁盘上创建数据的两份拷贝,这个级别提供最好的数据安全,但写速度慢. ...
- Zookeeper白话解释
官方的解释:Zookeeper提供了诸如统一命名空间服务,配置服务和分布式锁等分布式基础服务. 嗯,说上面这个话的人,良心不会痛吗? Zookeeper功能如上边说到的:统一命名空间服务 其他就tm跟 ...