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

使用Python BeautifulSoup爬取漫画网站图片URL时出现错误

问题排查与修复方案

你的代码报错是因为div_tag为None时调用了find_all()方法,触发AttributeError。以下是具体原因和修复步骤:

核心原因

  1. 反爬拦截:网站检测到请求来自脚本而非浏览器,返回的页面不含目标div#page{i}元素,导致soup.find()返回None。
  2. 页面结构不符:实际页面的图片容器id可能不是page{i},或者图片标签的位置和你预期的不同。
  3. 无效页面请求:range(1,54)覆盖的页数可能超出实际存在的章节页数,请求不存在的页面时返回的内容没有目标元素。

修复后的代码

import requests
from bs4 import BeautifulSoup

url = "https://mangakatana.com/manga/damn-reincarnation.26360/c6"
img_urls = []
# 模拟浏览器请求头,避免被反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

# 先缩小范围测试,后续可根据实际页数调整
for i in range(1, 11):
    try:
        response = requests.get(f'{url}/{i}', headers=headers)
        # 检查请求是否成功
        response.raise_for_status()
        soup = BeautifulSoup(response.content, "html.parser")
        
        div_tag = soup.find("div", {"id": f"page{i}"})
        if not div_tag:
            print(f"第{i}页未找到目标div,跳过")
            continue
        
        img_tags = div_tag.find_all("img")
        # 提取src,同时处理可能无src属性的情况
        for img in img_tags:
            src = img.get("src")
            if src:
                img_urls.append(src)
                print(f"找到图片链接:{src}")
    except Exception as e:
        print(f"请求第{i}页出错:{str(e)}")

print("\n所有图片链接:")
print(img_urls)

额外建议

  • 确认实际页数:手动打开章节页面,查看实际页数后调整range范围,避免请求无效页面。
  • 核对页面结构:在浏览器中右键检查目标页面元素,确认图片容器的id、标签层级是否和代码中的预期一致。
  • 动态加载处理:如果发现图片是通过JavaScript动态渲染的,requests无法获取到内容,可改用selenium或playwright工具模拟浏览器加载页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:50:27