【python实现网络爬虫(13)】python爬取全景网图片(python爬取动态网页图片)

网友投稿 298 2022-08-25


【python实现网络爬虫(13)】python爬取全景网图片(python爬取动态网页图片)

目标网址:​​全景网山水壁纸​​,页面如下

1. 网页分析

还是和之前爬取文字信息一致,需要进行网页信息的解析,获得图片数据所在的地址,然后进行图片的下载

分析网页后发现所需要的图片的url在【a.item.lazy img】中

2. 封装第一个函数,获取图片的url

首先是导入相关的库,然后进行函数的编写,这里的第一个函数的内容和之前的几乎一样

import requestsfrom bs4 import BeautifulSoupfrom uuid import uuid1import osdef get_image(): url = ' html = requests.get(url) # print(html) soup = BeautifulSoup(html.text,'lxml') # print(soup) images = soup.select('a.item.lazy img') # print(images) for img in images[:10]: print(img['src']) img_url = img['src']

–> 输出结果为:(这里只展示部分内容,每个网址都对应一张图片,在浏览器上输入网址即可下载)

封装第二个函数,进行图片的下载

首先要下载图片必须要有存放地址,所以要先创建文件夹用来保存要下载的文件,也就要用到了创建文件夹的常见搭配;

其次就是进行图片内容的写入,这里都是二进制的内容(图片、音频和视频都是),采用的是​​.content​​方法获得相应的信息

def download(url): if not os.path.exists('./picture'): os.makedirs('picture') with open('./picture/{}.jpg'.format(uuid1()),'wb') as f: f.write(requests.get(url).content)

最后在封装的第一个函数中调用这个函数

download(img_url)

–> 输出结果为:(uuid模块的功能就是创建不相同的随机数,用来给照片命名)

4. 拓展

如果不习惯使用这种很长的随机值来进行图片的文件进行命名,可以尝试之前用过的datetime模块,获得当前的日期,再配合着计数的方式给文件夹及图片文件进行命令

主要是对函数二来进行修改,最后全部的代码如下

import requestsfrom bs4 import BeautifulSoupfrom datetime import dateimport osdef get_image(): url = ' html = requests.get(url) # print(html) soup = BeautifulSoup(html.text,'lxml') # print(soup) images = soup.select('a.item.lazy img') # print(images) count = 1 for img in images[:50]: #print(img['src']) img_url = img['src'] download(img_url,count) print(f'正在下载第{count}张图片......') count += 1def download(url,count): today = str(date.today()) if not os.path.exists(f'./{today}_pic'): os.makedirs(f'{today}_pic') with open('./{}_pic/{}.jpg'.format(today,count),'wb') as f: f.write(requests.get(url).content)get_image()

–> 输出结果为:(温故而知新)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【python爬虫专项(28)】链家二手房源数据采集1(分页信息采集)(爬取链家网二手房数据)
下一篇:springboot如何通过不同的策略动态调用不同的实现类
相关文章

 发表评论

暂时没有评论,来抢沙发吧~