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

如何为每个<li>标签获取对应href?爬虫多图片链接提取问题

解决方法

你的问题出在使用find()方法——它只会返回第一个匹配的元素,所以只能拿到第一张图片链接。另外代码里的循环逻辑混乱,没必要遍历所有img标签,直接定位到目标锚点标签即可。

目标页面的产品图片都在<li>标签下的<a class="fancy-images">标签里,图片的原始链接就是这个a标签的href属性。

修正后的代码如下:

def scraping_data(productlinks, r):
    ix = 0
    for link in productlinks:
        ix += 1
        response = requests.get(link, headers=headers)
        response.encoding = response.apparent_encoding  # 处理编码问题,避免乱码
        hun = BeautifulSoup(response.text, 'html.parser')
        
        # 获取产品名称
        try:
            name = hun.find("h1", {"class": "product-name"}).get_text().strip()
            print(name)
        except:
            name = None
        
        # 获取所有图片链接
        try:
            print("Trying to fetch image...")
            # 找到所有带fancy-images类的a标签(对应<li>下的图片锚点)
            image_anchors = hun.find_all("a", {"class": "fancy-images"})
            # 遍历每个a标签提取href
            for idx, a_tag in enumerate(image_anchors):
                img_url = a_tag.get('href')
                if img_url:
                    print(f"图片{idx+1}: {img_url}")
        except Exception as e:
            print(f"获取图片失败: {str(e)}")

关键修改说明:

  • 用find_all()替代find(),一次性获取所有匹配的<a class="fancy-images">标签,而非仅第一个。
  • 直接定位目标锚点标签,无需遍历所有img标签——因为图片的原始高清链接存在a标签的href中,img标签的src只是缩略图。
  • 增加编码处理逻辑,避免页面内容乱码。
  • 移除了冗余无效的代码(比如原来的ioner = image.find_all(...)完全无意义)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:45:42