本文主要介绍Python爬虫批量抓取网页图片并保存在本地。本文通过示例代码非常详细的为您介绍,对您的学习或工作有一定的参考价值,有需要的朋友可以参考一下。
其实和抓取普通数据一样。但是,如果我们直接抓取数据,就会直接返回。抓取图像需要处理成二进制数据,保存为图像格式的数据文本(。jpg,png等。).
现在贴一个URL=https://img . ivsky . com/img/tu pian/t/2010 08/05/bianxingjing-001 . jpg。
请复制上面的url并直接在浏览器中打开它。您将看到以下内容:
这是通过网页访问的这个网站的图片,所以我们可以直接用requests模块来请求这个图片,然后这个网站会把这个图片的数据返回给我们,然后我们就可以把数据写入本地的文件,这个比较简单。
导入请求
标题={
用户代理':' Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/70 . 0 . 3538 . 25 Safari/537.36 Core/1 . 70 . 3861 . 400 QQ browser/10 . 7 . 4313 . 400 ' }
URL=' https://img . ivsky . com/img/tu pian/t/2010 08/05/bianxingjingan-001 . jpg '
re=requests.get(url,headers=headers)
Print(re.status_code)#检查请求的状态,返回200表示正常。
Path='test.jpg'#文件存储地址
以(path,' wb ')为f: #将图片数据写到本地,WB表示二进制存储。
对于条目内容中的块(块大小=128):
f.write(块)
然后得到test.jpg的图片如下
点击查看如下:
只是下载成功了。很简单。
现在分析批量下载。我们把上面的代码打包成一个函数,所以对于每一个图像,都需要一个单独的名称和一个单独的图像文件,所以有下面的代码:
导入请求
def get_pictures(url,path):
标题={
用户代理':' Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/70 . 0 . 3538 . 25 Safari/537.36 Core/1 . 70 . 3861 . 400 QQ browser/10 . 7 . 4313 . 400 ' }
re=requests.get(url,headers=headers)
Print(re.status_code)#检查请求的状态,返回200表示正常。
以(path,' wb ')为f: #将图片数据写到本地,WB表示二进制存储。
对于条目内容中的块(块大小=128):
f.write(块)
URL=' https://img . ivsky . com/img/tu pian/t/2010 08/05/bianxingjingan-001 . jpg '
Path='test.jpg'#文件存储地址
获取图片(url,路径)
现在要批量下载图片,也就是批量获取图片的url,那么我们要分析网页的代码结构,打开原网站https://www.ivsky.com/tupian/bianxingjingang_v622/,你会看到下面的图片:
所以我们需要分别获取这个页面中显示的所有图片的URL,所以我们再次使用requests模块返回这个页面的当前内容,如下所示:
导入请求
标题={
用户代理':' Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/70 . 0 . 3538 . 25 Safari/537.36 Core/1 . 70 . 3861 . 400 QQ browser/10 . 7 . 4313 . 400 ' }
URL=' https://www . ivsky . com/tu pian/bianxingjingan _ v 622/'
re=requests.get(url,headers=headers)
打印(回复文本)
运行会返回当前页面的页面结构内容,所以我们找到与图片相关的注释,也就是图片格式如。jpg或者。巴布亚新几内亚,如下:
带圈的* *//img . ivsky . com/img/tu pian/t/2010 08/05/bianxingjing-017 . jpg * *是我们的图片网址,但是需要在前面加https:所以完整的网址是3359img.ivsky.com/img/tupian.
现在我们知道了这个结构,我们应该提取它并写出一个简单的解析公式:
导入请求
标题={
用户代理':' Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/70 . 0 . 3538 . 25 Safari/537.36 Core/1 . 70 . 3861 . 400 QQ browser/10 . 7 . 4313 . 400 ' }
URL=' https://www . ivsky . com/tu pian/bianxingjingan _ v 622/'
re=requests.get(url,headers=headers)
def get_pictures_urls(文本):
st='img src=' '
m=长度(st)
i=0
n=len(文本)
Urs=[] #保存url
当在:
if text[i:i m]==st:
url=' '
对于范围内的j(I m,n):
如果文本[j]==' ' ':
i=j
URL . append(URL)
破裂
url=text[j]
i=1
返回URL
urls=get_pictures_urls(re.text)
对于url中的URL:
打印(url)
打印结果如下:
获取网址,现在直接放入开头的get_pictures函数,抓取图片。
导入请求
def get_pictures(url,path):
标题={
用户代理':' Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/70 . 0 . 3538 . 25 Safari/537.36 Core/1 . 70 . 3861 . 400 QQ browser/10 . 7 . 4313 . 400 ' }
re=requests.get(url,headers=headers)
Print(re.status_code)#检查请求的状态,返回200表示正常。
以(path,' wb ')为f: #将图片数据写到本地,WB表示二进制存储。
对于条目内容中的块(块大小=128):
f.write(块)
def get_pictures_urls(文本):
st='img src=' '
m=长度(st)
i=0
n=len(文本)
Urs=[] #保存url
当在:
if text[i:i m]==st:
url=' '
对于范围内的j(I m,n):
如果文本[j]==' ' ':
i=j
URL . append(URL)
破裂
url=text[j]
i=1
返回URL
标题={
用户代理':' Mozilla/5.0(Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/70 . 0 . 3538 . 25 Safari/537.36 Core/1 . 70 . 3861 . 400 QQ browser/10 . 7 . 4313 . 400 ' }
URL=' https://www . ivsky . com/tu pian/bianxingjingan _ v 622/'
re=requests.get(url,headers=headers)
urs=Get _ pictures _ URLs(re . text)#获取当前页面所有图片的URL。
对于范围内的I(len(URL)):#批量抓取图片
URL=' https:' URL[I]
Path=' Transformers' str(i)'。' jpg '
获取图片(url,路径)
结果如下:
然后辣完,这里只是简单介绍一下批量抓取图片的流程。具体网站需要具体分析,所以本文尽可能详细的展示了批量抓取图片的过程分析,希望对你的学习有所帮助。有问题请及时指出,谢谢~
关于Python爬虫抓取web图片并保存到本地的这篇文章到此结束。更多相关Python爬虫抓取图片并保存在本地,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。