java中的接口是类吗
313
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~