python自动保存图片_Python学习笔记:利用爬虫自动保存图片

本文记录了作者使用Python爬虫技术突破网站反爬措施,成功下载图片的过程。首先尝试简单请求,遇到反爬限制后,通过添加headers模拟浏览器请求,最终成功保存图片。同时提到,网站防护不足,使付费部分的图片也能被爬取。文章总结了爬虫的基本步骤:发起请求、获取响应、解析内容和保存数据。
摘要由CSDN通过智能技术生成

兴趣才是第一生产驱动力。

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 等格式的文件。这就相当于我们在浏览网页时,下载了网页上的图片或者视频。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值