静态网页正则表达式爬取图片并保存

1.说明

因为https://desk.zol.com.cn/fengjing/恰好为静态网页,requests返回的东西有我们想要的东西,所以用最基础的正则表达式来爬取图片并保存。

2.分析html

我们要提取图片的名称,图片链接,图片的上映日期。
我们可以发现,每个图片的信息都在<li class="photo-list-padding">开头的标签节点内,我们可以根据这个开头,中间多余部分用.*?抓取,要爬取的部分用(.*?)来抓取

<li class="photo-list-padding">
<a class="pic" href="/bizhi/9611_116395_2.html" target="_blank" onclick="zol_niux_tongji('desk_list_firstpic')" hidefocus="true">
<img width="208px" height="130px"  alt="一组超美的自然和风光图片壁纸" src="https://desk-fd.zol-img.com.cn/t_s208x130c5/g6/M00/0D/02/ChMkKmBdVRiIK7LEAE_CB2CYD80AAMGwgNaucgAT8If023.jpg" 
title = "一组超美的自然和风光图片壁纸"/>
<span title="一组超美的自然和风光图片壁纸">
<em>一组超美的自然和风光图片</em> (8张)</span></a><div class="shadow"></div><ins>2021-03-26</ins>

3.正则表达式

class="photo-list-.*?src="(.*?)"\stitle\s=\s"(.*?)".*?<ins>(.*?)</ins>

4.代码

import requests
import re
def get_html(url):
    headers = {
    
    
        'user-agent': 'Mozilla/5.0 (MSIE 10.0; Windows NT 6.1; Trident/5.0)'
    }
    html = requests.get(url,headers=headers)
    html.encoding = 'gbk'
    return html.text
def get_NOno(html):
    str1 = re.compile('class="photo-list-.*?src="(.*?)"\stitle\s=\s"(.*?)".*?<ins>(.*?)</ins>',re.S)
    items = re.findall(str1,html)
    return items
def main():
    url = 'https://desk.zol.com.cn/fengjing/'
    html = get_html(url)
    c = get_NOno(html)
    for (i,x) in zip(c,range(1,21)):
        print(i[0])
        picture = requests.get(i[0])
        f = open(r"D:\\Picture\fengjing" +  str(x) + ".png" , 'wb')
        f.write(picture.content)
        f.close()
main()

5.最终结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sgsdsdd/article/details/115298294