You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从指定网站爬取指定数量(如15张)的图片

修改代码以限制爬取图片数量

可以通过两种简单方式实现只爬取指定数量的图片(比如15张),以下是具体修改方案:

方案一:对图片列表进行切片截取

直接在收集完图片链接后,截取列表的前N项:

from bs4 import BeautifulSoup  # 修正原导入方式,更规范
import requests as rq
import sys

page_url = sys.argv[1]
# 修正URL拼接逻辑,避免重复添加www和斜杠
if not page_url.startswith(('http://', 'https://')):
    page_url = f'https://www.{page_url}'
if not page_url.endswith('/'):
    page_url += '/'

r2 = rq.get(page_url)
soup2 = BeautifulSoup(r2.text, "html.parser")
images = []

image_sources = soup2.select('img')
for img in image_sources:
    # 避免没有src属性的图片报错
    if 'src' in img.attrs:
        images.append(img['src'])

# 指定要爬取的图片数量
target_count = 15
# 截取前target_count个链接,避免列表长度不足时出错
selected_images = images[:target_count]

for l in selected_images:
    print(l)

方案二:遍历过程中计数并终止

在遍历图片元素时,计数达到指定数量就停止,减少不必要的遍历:

from bs4 import BeautifulSoup
import requests as rq
import sys

page_url = sys.argv[1]
if not page_url.startswith(('http://', 'https://')):
    page_url = f'https://www.{page_url}'
if not page_url.endswith('/'):
    page_url += '/'

r2 = rq.get(page_url)
soup2 = BeautifulSoup(r2.text, "html.parser")
images = []

target_count = 15
count = 0

image_sources = soup2.select('img')
for img in image_sources:
    if count >= target_count:
        break
    if 'src' in img.attrs:
        images.append(img['src'])
        count += 1

for l in images:
    print(l)

关键修改点说明

  • 添加了URL格式校验:避免用户输入的URL重复出现www或斜杠,提升代码鲁棒性
  • 增加了src属性判断:防止部分图片标签没有src属性导致程序报错
  • 通过列表切片或计数终止的方式,严格控制爬取的图片数量

内容的提问来源于stack exchange,提问作者Mike D Hovhannisyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:25:20