爬取糗事百科图片(正则案例)

首先前面来到糗事百科中的热图页面。然后右键检查打开浏览器的抓包工具,如下图所示:
在这里插入图片描述
在这里插入图片描述

通过对请求headers与响应response与element的分析,我们可以了解到图片链接就在该地址栏的网址下的div标签下的img标签的src中。通过将链接在地址栏输入可以得到验证。然后我们就可以对一个个图片通过正则进行匹配了,通过使用 .*?来匹配一次任意字符串。注意大家写正则的时候,注意原字符串空格等都不要忽略了,否则可能导致匹配失败。我们要匹配的url类似如图所示的src属性:
在这里插入图片描述

分页爬取的时候,我们可以观察其他页面的url,下一页中例如https://www.qiushibaike.com/imgrank/page/2/
https://www.qiushibaike.com/imgrank/page/3/
通过地址栏输入,我们可以看到第一页同样有效
https://www.qiushibaike.com/imgrank/page/1/
好了。话不多说,更多分析都在以下代码中

mport requests
import re
import os
#爬取糗事百科中糗图板块下所有的糗图图片
if __name__ == "__main__":
    #创建一个文件夹,保存所有图片
    if not os.path.exists('./qiutulib'):
        os.mkdir('./qiutulib')
    headers = {
    
    
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
    }
    # url = 'https://www.qiushibaike.com/imgrank/'
    #设置一个通用的url模板
    url='https://www.qiushibaike.com/imgrank/page/%d'
    for  pageNum in range(1,3):
        new_url = format(url%pageNum)  #对应页面的url
        #使用通用爬虫对url对应的一整张页面进行爬取
        page_text=requests.get(url=new_url,headers=headers).text
        #使用聚焦爬虫将页面中所有的图片进行解析/提取
        ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
        # ex ='<html xmlns="http://www.w3.org/1999/xhtml">.*?</html>'
        img_src_list = re.findall(ex,page_text,re.S)  #re.S单行匹配,re.M多行匹配
        # print(img_src_list)
        for src in img_src_list:
            #拼接出一个完整的图片url
            src = 'https:'+src
            #请求到了图片的二进制数据
            img_data = requests.get(url=src,headers=headers).content
            #生成图片名称
            img_name = src.split('/')[-1]
            #图片存储的路径
            imgPath = './qiutulib/'+img_name
            with open(imgPath,'wb') as fp:
                fp.write(img_data)
                print(img_data,"下载成功")

打开文件夹如图所示,就可以查看我们爬取的图片了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45701131/article/details/109399726