当前位置:首页 » 《随便一记》 » 正文

Python爬虫爬取网页上的所有图片

3 人参与  2023年03月29日 18:09  分类 : 《随便一记》  评论

点击全文阅读


一. 前言

以该网页(链接)为例,上面有图片形式的PPT内容,我的目的是将所有图片下载下来保存到本地,如果鼠标一张一张点击下载效率很低,于是可以用爬虫批量爬取图片。

采用爬虫爬取网页中的图片主要分为两个步骤:

获取网页中所有图片的链接;下载图片对应链接并保存在本地。

接下来我将分别从以上两个步骤讲解图片爬取过程。

二. 获取图片链接

在网页中按下键盘右上角的F12,找到网页的Html,如图所示:

在这里插入图片描述
当我们的鼠标在Html上移动时,左边对应位置处将会变成蓝色。在Html中查找img,直到看到左边图片对应的部分变成蓝色了,就说明找到了该图片对应的Html语句,如图所示:

在这里插入图片描述
展开Html语句,可以看到里面包含了图片的链接:
在这里插入图片描述
其他图片链接的位置同理,可以发现他们都有一个共同点,那就是图片的链接都出现在data-src= data-type=之间,利用正则表达式即可获取所有图片的链接。

三. 批量下载图片

这部分比较简单,只需要循环访问图片链接,下载后保存到本地即可。

完整程序如下所示:

# -*- coding: utf-8 -*-import reimport requestsfrom urllib import errorfrom bs4 import BeautifulSoupimport osfile = ''List = []#爬取图片链接def Find(url, A):    global List    print('正在检测图片总数,请稍等.....')    s = 0    try:        Result = A.get(url, timeout=7, allow_redirects=False)    except BaseException:        print("error");    else:        result = Result.text        pic_url = re.findall('data-src="(.*?)" data-type', result)  # 先利用正则表达式找到图片url        s += len(pic_url)        if len(pic_url) == 0:            print("没读到")        else:            List.append(pic_url)    return s#下载图片def dowmloadPicture():    num = 1    for each in List[0]:        print('正在下载第' + str(num) + '张图片,图片地址:' + str(each))        try:            if each is not None:                pic = requests.get(each, timeout=7)            else:                continue        except BaseException:            print('错误,当前图片无法下载')            continue        else:            if len(pic.content) < 200:                continue            string = file + r'\\'  + str(num) + '.jpg'            fp = open(string, 'wb')            fp.write(pic.content)            fp.close()            num+=1if __name__ == '__main__':  # 主函数入口    headers = {        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',        'Connection': 'keep-alive',        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',        'Upgrade-Insecure-Requests': '1'    }    A = requests.Session()    A.headers = headers    url = 'https://mp.weixin.qq.com/s/An0nKnwlml9gvyUDyT65zQ'    total = Find(url, A)    print('经过检测图片共有%d张' % (total))    file = input('请建立一个存储图片的文件夹,输入文件夹名称即可: ')    y = os.path.exists(file)    if y == 1:        print('该文件已存在,请重新输入')        file = input('请建立一个存储图片的文件夹,)输入文件夹名称即可: ')        os.mkdir(file)    else:        os.mkdir(file)    dowmloadPicture()    print('当前爬取结束,感谢使用')

程序使用时仅需要修改网址链接即可,必要时需要修改正则表达式。


点击全文阅读


本文链接:http://zhangshiyu.com/post/57163.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 苏锦瑶魏昭今日阅读更新-(魏昭苏锦瑶)全文免费阅读-魏昭苏锦瑶
  • 苏锦瑶魏昭(魏昭苏锦瑶)全文免费阅读无弹窗大结局_(苏锦瑶魏昭)
  • 程星野杨北茉(杨北茉程星野)全文免费阅读无弹窗大结局_程星野杨北茉最新章节列表_笔趣阁(杨北茉程星野)
  • (程星野杨北茉)全文免费阅读无弹窗大结局_(杨北茉程星野阅读无弹窗)程星野杨北茉最新章节列表_笔趣阁(杨北茉程星野)
  • 盛景淮沈茉漓(沈茉漓盛景淮)全文免费阅读无弹窗大结局_盛景淮沈茉漓最新章节列表_笔趣阁(沈茉漓盛景淮)
  • 沈茉漓盛景淮(沈茉漓盛景淮)全文免费阅读无弹窗大结局_(沈茉漓盛景淮)沈茉漓盛景淮最新章节列表(沈茉漓盛景淮)
  • 玄昭温绰玉阅读无弹窗大结局_(温绰玉玄昭阅读无弹窗)最新章节列表_笔趣阁(温绰玉玄昭)
  • 温绰玉玄昭(玄昭温绰玉)全文免费阅读无弹窗大结局_温绰玉玄昭最新章节列表_笔趣阁(玄昭温绰玉)
  • 纪云禾陆景淮阅读无弹窗大结局_(陆景淮纪云禾阅读无弹窗)最新章节列表_笔趣阁(陆景淮纪云禾)
  • 陆景淮纪云禾阅读无弹窗大结局_(纪云禾陆景淮阅读无弹窗)最新章节列表_笔趣阁(纪云禾陆景淮)
  • 秦樾容裳最新章节(容裳秦樾)全文免费阅读无弹窗大结局_秦樾容裳全文免费阅读(容裳秦樾)
  • (容裳秦樾)全文免费阅读无弹窗大结局_(秦樾容裳阅读无弹窗)容裳秦樾最新章节列表_笔趣阁(秦樾容裳)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1