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

如何用BeautifulSoup提取Slideshare演示文稿首图高清URL?

解决Slideshare幻灯片图片URL提取与遍历问题

核心思路

你偏好通过匹配-1-2048.jpg片段提取URL的思路非常实用——这种方式不依赖固定HTML结构,适配性更强。我们可以遍历页面中所有带链接属性(src/href)的标签,筛选出包含目标片段的URL,再通过字符串替换实现页码遍历。

完整代码实现

import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, urlunparse

# 目标Slideshare页面URL
slideshare_url = "https://www.slideshare.net/JSYashas/netflix-73262280"
# 定位第一张图片的特征片段
target_fragment = "-1-2048.jpg"

# 发送请求并解析页面
response = requests.get(slideshare_url)
soup = BeautifulSoup(response.content, 'lxml')

first_image_url = None

# 先检查所有img标签的src属性
for img in soup.find_all('img'):
    src = img.get('src')
    if src and target_fragment in src:
        first_image_url = src
        break

# 如果img标签中未找到,检查a标签的href属性
if not first_image_url:
    for link in soup.find_all('a'):
        href = link.get('href')
        if href and target_fragment in href:
            first_image_url = href
            break

if first_image_url:
    print(f"提取到第一张图片URL: {first_image_url}")
    
    # 处理URL生成可遍历的基础模板
    parsed_url = urlparse(first_image_url)
    # 替换路径中的页码部分为占位符
    base_path = parsed_url.path.replace("-1-2048.jpg", "-{}-2048.jpg")
    # 重新组合URL(保留原查询参数)
    base_url_template = urlunparse(parsed_url._replace(path=base_path))
    
    # 示例:遍历第1到10页的图片URL(可根据实际幻灯片页数调整total_pages)
    total_pages = 10
    for page_num in range(1, total_pages + 1):
        page_image_url = base_url_template.format(page_num)
        print(f"第{page_num}页图片URL: {page_image_url}")
else:
    print("未找到符合特征的图片URL")

关键说明

  1. 多标签匹配:Slideshare的图片链接可能出现在img的src或a标签的href中,同时检查两种标签避免遗漏;
  2. URL标准化处理:用urllib.parse解析URL,避免直接字符串替换时误改查询参数(如?cb=xxx);
  3. 页码遍历:将URL中的-1-替换为-{page}-占位符,通过循环快速生成对应页码的图片链接。

内容的提问来源于stack exchange,提问作者Orsova

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:45:24