zoukankan      html  css  js  c++  java
  • 35行代码下载任意网页的图片

    一、简介

    有没有一种代码可能实现下载任意网页的图片,这样对于需要下载大量壁纸,图片的小伙伴来说真是一个好福利,今天我们就来试试。

    先看视频演示效果

    35行代码下载任意网页的图片_演示视频

    https://v.qq.com/x/page/f3220zfigqq.html

    二、分析

    爬取过网页图片的小伙伴都知道,需要通过lxml去解析对应的网页,每一个网页的网页标签结构不一样,因此爬取一个网站的图片就需要解析一次,那想爬取多个网站时,那.....,(打扰了,告辞)

    因此我们来看一下网页的图片存放在哪个网页标签

    案例网页1

    ###网页链接
    http://desk.zol.com.cn/bizhi/9461_115065_2.html
    


    案例网页2

    ###网页链接
    http://www.netbian.com/index.htm
    

    案例网页3

    ###网页链接
    http://www.jj20.com/bz/mwjy/msdc/294138.html
    

    通过这三个案例网站的分析可以发现图片都是在img标签下,因此根据这个规律可以写正则表达式去进行爬取图片。

    三、代码

    所需库

    import re
    import requests
    

    re是正则表达式的库,requests用于获取网页数据

    请求网页

    #请求头 
    headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75'
        }
    #请求数据,其中url是目标网页
    web_text = requests.get(url, headers=headers).text
    

    正则表达式

    ex = '<img.*?src="(.*?)".*?'
    img_list = re.findall(ex, web_text)
    

    获取图片链接

    # 补充协议头
    if not (img.startswith('http') or img.startswith('https')):
        img = 'http:' + img
    img_binary = requests.get(img, headers=headers).content
    # 切割出最后一个字符串
    file_name = img.split('/')[-1]
    # 切割 query字符
    file_name = file_name.split('?')[0]
    

    保存图片到本地

    with open(f'./李运辰_img/{file_name}', 'wb') as fp:
        fp.write(img_binary)
    

    四、效果演示

    比如演示的图片链接

    http://desk.zol.com.cn/bizhi/9461_115065_2.html
    

    运行程序后

    在本地文件夹可以看到爬取的图片

    五、结尾

    好了,以上就是完整的介绍,有问题的可以在下方评论,互勉互励,一起努力。

    完整源码获取方式

    公众号回复:万能图片爬虫

    ------------------- End -------------------

    各种爬虫源码获取方式

    识别文末二维码,回复:爬虫源码

    ------------- 往期精彩文章 --------------

    python窃取摄像头照片(摄像头拍照+邮箱发送+打包exe)

    30行爬虫代码实现中英互译

    分析B站《送你一朵小红花》弹幕评论

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

    想加入Python学习群请在后台回复【入群

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

    耐得住寂寞,才能登得顶
    Gitee码云:https://gitee.com/lyc96/projects
  • 相关阅读:
    windows7系统下升级到IE11时无法使用F12开发人员工具的解决办法
    微信公众号在线编辑器
    solr安装使用笔记
    在windows资源管理器添加进入当前目录dos窗口的快捷菜单
    spring mvc返回jsonp内容
    oracle最大连接数相关
    redis可视化管理工具Redis Desktop Manager
    Struts2远程代码执行漏洞预警
    postman请求数据库方法(Omysql)
    Selenium+java
  • 原文地址:https://www.cnblogs.com/chenlove/p/14290370.html
Copyright © 2011-2022 走看看