python批量访问网页保存结果_Python 爬虫批量爬取网页图片保存到本地的实现代码...

本文介绍了如何使用Python爬虫批量下载网页上的图片。通过requests库获取图片URL,再将其保存为本地图片文件。文章详细展示了从解析网页结构获取图片链接到下载图片的完整过程,适合初学者参考。
摘要由CSDN通过智能技术生成

a58e82c2b6b9e86e94288acde5e62337.gif

这篇文章主要介绍了Python 爬虫批量爬取网页图片保存到本地,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

其实和爬取普通数据本质一样,不过我们直接爬取数据会直接返回,爬取图片需要处理成二进制数据保存成图片格式(.jpg,.png等)的数据文本。

现在贴一个url=https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-001.jpg请复制上面的url直接在某个浏览器打开,你会看到如下内容:

5e905ffd083f303f721c7e34a8026a93.png

这就是通过网页访问到的该网站的该图片,于是我们可以直接利用requests模块,进行这个图片的请求,于是这个网站便会返回给我们该图片的数据,我们再把数据写入本地文件就行,比较简单。

importrequests

headers={

'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}

url='https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-001.jpg'

re=requests.get(url,headers=headers)

print(re.status_code)#查看请求状态,返回200说明正常

path='test.jpg'#文件储存地址

withopen(path,'wb')asf:#把图片数据写入本地,wb表示二进制储存

forchunkinre.iter_content(chunk_size=128):

f.write(chunk)

然后得到test.jpg图片,如下

8667c3d14f617b64738343d75142f9d9.png

点击打开查看如下:

f7829723d36922f605b4773514872926.png

便是下载成功辣,很简单吧。

现在分析下批量下载,我们将上面的代码打包成一个函数,于是针对每张图片,单独一个名字,单独一个图片文件请求,于是有如下代码:

importrequests

defget_pictures(url,path):

headers={

'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}

re=requests.get(url,headers=headers)

print(re.status_code)#查看请求状态,返回200说明正常

withopen(path,'wb')asf:#把图片数据写入本地,wb表示二进制储存

forchunkinre.iter_content(chunk_size=128):

f.write(chunk)

url='https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-001.jpg'

path='test.jpg'#文件储存地址

get_pictures(url,path)

现在要实现批量下载图片,也就是批量获得图片的url,那么我们就得分析网页的代码结构,打开原始网站https://www.ivsky.com/tupian/bianxingjingang_v622/,会看到如下的图片:

99d8dc5dfd68156318ea49690aabc81f.png

于是我们需要分别得到该页面中显示的所有图片的url,于是我们再次用requests模块返回当前该页面的内容,如下:

importrequests

headers={

'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}

url='https://www.ivsky.com/tupian/bianxingjingang_v622/'

re=requests.get(url,headers=headers)

print(re.text)

运行会返回当前该页面的网页结构内容,于是我们找到和图片相关的也就是.jpg或者.png等图片格式的字条,如下:

3d3c544bc1cec1cfc6a3aa6651ec4560.png

上面圈出来的**//img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-017.jpg**便是我们的图片url,不过还需要前面加上https:,于是完成的url就是https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-017.jpg。

我们知道了这个结构,现在就是把这个提取出来,写个简单的解析式:

importrequests

headers={

'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}

url='https://www.ivsky.com/tupian/bianxingjingang_v622/'

re=requests.get(url,headers=headers)

defget_pictures_urls(text):

st='img src="'

m=len(st)

i=0

n=len(text)

urls=[]#储存url

whilei

iftext[i:i+m]==st:

url=''

forjinrange(i+m,n):

iftext[j]=='"':

i=j

urls.append(url)

break

url+=text[j]

i+=1

returnurls

urls=get_pictures_urls(re.text)

forurlinurls:

print(url)

打印结果如下:

fbbeded7d8f8f44074582ca6133aebc5.png

得到了url,现在就直接放入一开始的get_pictures函数中,爬取图片辣。

importrequests

defget_pictures(url,path):

headers={

'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}

re=requests.get(url,headers=headers)

print(re.status_code)#查看请求状态,返回200说明正常

withopen(path,'wb')asf:#把图片数据写入本地,wb表示二进制储存

forchunkinre.iter_content(chunk_size=128):

f.write(chunk)

defget_pictures_urls(text):

st='img src="'

m=len(st)

i=0

n=len(text)

urls=[]#储存url

whilei

iftext[i:i+m]==st:

url=''

forjinrange(i+m,n):

iftext[j]=='"':

i=j

urls.append(url)

break

url+=text[j]

i+=1

returnurls

headers={

'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}

url='https://www.ivsky.com/tupian/bianxingjingang_v622/'

re=requests.get(url,headers=headers)

urls=get_pictures_urls(re.text)#获取当前页面所有图片的url

foriinrange(len(urls)):#批量爬取图片

url='https:'+urls[i]

path='变形金刚'+str(i)+'.jpg'

get_pictures(url,path)

结果如下:

6b75f3825232e2a0cbdd5779d5e5b0e4.png

然后就完成辣,这里只是简单介绍下批量爬取图片的过程,具体的网站需要具体分析,所以本文尽可能详细的展示了批量爬取图片的过程分析,希望对你的学习有所帮助,如有问题请及时指出,谢谢~

到此这篇关于Python 爬虫批量爬取网页图片保存到本地的文章就介绍到这了

f51d1f6ad07cfe28f684d8599e224df6.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

万水千山总是情,点个【在看】行不行

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值