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

如何通过Class获取图片的src属性并存储至MongoDB

解决图片src无法保存到MongoDB的问题

你当前的代码通过find()获取到的是BeautifulSoup的Tag对象,而非图片链接字符串,直接存入MongoDB会被序列化为null。只需提取标签的src属性值即可解决问题,具体修改如下:

修改后的代码片段

from urllib.parse import urljoin  # 处理相对路径时需导入

cate_list = [
    "https://myaeon2go.com/products/category/1208101/fresh-foods",
    "https://myaeon2go.com/products/category/8630656/ready-to-eat",
    "https://myaeon2go.com/products/category/6528959/grocery",
    "https://myaeon2go.com/products/category/6758871/snacks",
    "https://myaeon2go.com/products/category/8124135/chill-&-frozen",
    "https://myaeon2go.com/products/category/4995043/beverage",
    "https://myaeon2go.com/products/category/3405538/household",
    "https://myaeon2go.com/products/category/493239/baby-&-kids",
]

cookies = {
    "hideLocationOverlay": "true",
    "selectedShippingState": "Kuala Lumpur",
    "selectedPostalCode": "56000",
}

for url in cate_list:
    result = requests.get(url, cookies=cookies)
    doc = BeautifulSoup(result.text, "html.parser")

    # 替换为实际的产品容器选择器(需通过浏览器开发者工具确认)
    for product in doc.select(".product-container"):
        # 定位图片标签
        img_tag = product.find("img", {"class": "pgJEkulRiYnxQNzO8njV shown"})
        # 提取src属性,用get()避免标签不存在时抛出异常
        img_src = img_tag.get("src") if img_tag else None
        
        # 若src是相对路径,拼接为完整可访问URL
        if img_src and not img_src.startswith("http"):
            img_src = urljoin(url, img_src)
        
        # 此时img_src为字符串,可直接存入MongoDB
        # 示例插入操作:collection.insert_one({"image_src": img_src})

关键说明

  • 提取属性值:find()返回的Tag对象需通过.get("src")提取属性值,比直接用["src"]更安全——当图片标签不存在时,get()会返回None而非抛出异常。
  • 处理相对路径:部分网站图片src为相对路径,需用urljoin拼接当前页面URL,生成完整可访问的链接。
  • 产品容器选择器:需确保doc.select(".product-container")中的选择器匹配页面中单个产品的容器标签,可通过浏览器开发者工具查看页面结构获取正确选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:45:54