爬虫剑谱第八页(爬取糗图百科图片)

该博客介绍了一个Python爬虫程序,用于从糗事百科网站上抓取指定页面范围内的图片,并将它们保存到本地文件夹中。程序利用requests库获取网页源码,再用正则表达式解析HTML,提取图片链接,最后通过requests下载图片并保存。整个过程展示了基本的网页爬虫实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:

首先准备第三库:
 

import requests
import re
import os

request:用于请求网页获取数据

re:正则表达式

os:操作文件

创建一个文件夹:

# 创建一个文件夹,用于保存爬取的图片
if not os.path.exists('./糗图百科'):
    os.mkdir('./糗图百科')

设置url以及和header头

url = "https://www.qiushibaike.com/imgrank/page/%d/"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/15"
}

header头用于伪装爬虫,防止反爬机制检测

遍历每一个网页

for num in range(1, 5):
    new_url = format(url % num)
    repons = requests.get(url=new_url, headers=headers).text
    # text(字符串) json()(对象类型) content(二进制)

    # 使用聚焦爬虫对页面进行数据解析
    ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
    img_src_list = re.findall(ex, repons, re.S)

 获取每一个网页的源码并进行数据解析

通过正则表达式获取到每一页的所有图片链接

对每一页每一张图片进行永久化保存

    for soc in img_src_list:
        soc = 'https:' + soc
        # 请求图片的二进制数据
        img_soc = requests.get(url=soc, headers=headers).content
        # 生成图片名称
        img_name = soc.split('/')[-1]
        # 图片储存的路径
        imgPath = './糗图百科/' + img_name
        with open(imgPath, 'wb') as fp:
            fp.write(img_soc)
            print(img_name + "下载成功!")
            # i += 1

完整代码:

import requests
import re
import os

i = 1
# 创建一个文件夹,用于保存爬取的图片
if not os.path.exists('./糗图百科'):
    os.mkdir('./糗图百科')
url = "https://www.qiushibaike.com/imgrank/page/%d/"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/15"
}

for num in range(1, 5):
    new_url = format(url % num)
    repons = requests.get(url=new_url, headers=headers).text
    # text(字符串) json()(对象类型) content(二进制)

    # 使用聚焦爬虫对页面进行数据解析
    ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
    img_src_list = re.findall(ex, repons, re.S)
    for soc in img_src_list:
        soc = 'https:' + soc
        # 请求图片的二进制数据
        img_soc = requests.get(url=soc, headers=headers).content
        # 生成图片名称
        img_name = soc.split('/')[-1]
        # 图片储存的路径
        imgPath = './糗图百科/' + img_name
        with open(imgPath, 'wb') as fp:
            fp.write(img_soc)
            print(img_name + "下载成功!")
            # i += 1
print("爬取完成")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值