依联网 item_search 接口对接全攻略:从入门到精通

简介: 依联网item_search接口专为工业零部件搜索设计,支持关键词、分类、技术参数等多维度筛选,返回商品型号、价格、供应商资质等核心数据。本文详解其页面解析逻辑、反爬对抗与工业场景适配,助你构建稳定高效的B2B商品采集系统。

依联网作为聚焦工业零部件、自动化设备的 B2B 电商平台,其商品搜索功能(item_search接口,非官方命名)是获取工业品类商品列表的核心入口。数据包含型号规格、供应商资质、技术参数等工业特有字段,对工业采购选型、供应链分析、供应商筛选等场景具有关键价值。由于平台无公开官方 API,开发者需通过页面解析实现搜索对接。本文系统讲解接口逻辑、参数解析、技术实现及工业场景适配策略,助你构建稳定的工业商品列表获取系统。
一、接口基础认知(核心功能与场景)
核心功能依联网item_search接口通过关键词、分类、技术参数等条件筛选商品,返回符合条件的列表数据,核心字段聚焦工业特性:
基础信息:商品 ID(item_id)、标题(含型号 / 规格)、主图、品牌、类目(如 “传感器”“减速机”)、详情页 URL
价格信息:含税单价、最小起订量(MOQ)、批量折扣(如 “500 件以上 9 折”)、价格区间(多规格商品)
技术属性:核心参数(如 “额定电压 24V”“防护等级 IP67”)、执行标准(如 “IEC 61131”)、型号兼容性
供应商信息:企业名称、资质标签(如 “ISO9001”“军工认证”)、所在地(如 “上海松江工业区”)
交易数据:库存状态(现货 / 期货)、交货周期(如 “3-5 工作日”)、成交记录(如 “已售 1200+”)
典型应用场景
工业采购选型:搜索 “接近开关”,按 “防护等级 IP67 + 现货” 筛选,对比不同供应商的价格与交货周期
供应链优化:筛选 “伺服电机” 类目下 “日产能 500+” 的供应商,评估供货稳定性
替代型号查询:通过 “兼容型号” 关键词搜索,找到停产型号的替代产品
市场分析:统计 “PLC 控制器” 的品牌分布、价格区间及主流技术参数
接口特性
工业专业性:筛选条件与数据字段深度结合工业场景(如 “额定功率”“安装方式”)
非官方性:依赖 HTML 解析,无公开 API,页面结构以静态为主(工业平台更新频率低)
反爬机制:包含 IP 限制(高频请求封锁)、User-Agent 校验、Cookie 验证(部分价格需登录)
分页结构:默认每页 30 条,最多支持 30 页(约 900 条结果),分页参数通过 URL 传递
多规格支持:部分商品含多型号 / 规格,列表页需展示核心规格差异(如 “电压 24V/110V”)
二、对接前置准备(参数与 URL 结构)
开发环境
开发语言:Python(推荐,适合处理表格类参数解析与反爬)
核心库:
网络请求:requests(同步)、aiohttp(异步批量搜索)
页面解析:BeautifulSoup(静态 HTML)、lxml(XPath 提取列表数据)
反爬工具:fake_useragent(随机 UA)、proxy_pool(代理 IP 池)
数据处理:re(正则提取型号、参数)、urllib.parse(URL 参数编码)
搜索 URL 结构与核心参数依联网搜索页基础
筛选条件 参数名 示例值 说明
关键词 keyword 接近开关 → 编码后为%E6%8E%A5%E8%BF%91%E5%BC%E5%85%B3 支持商品名、型号(如 “E2E-X10ME1”)
分类 ID cat_id 102(传感器)、205(电机) 分类 ID 需从工业类目导航解析获取
价格区间(始) price_min 100 最低单价(元,含税)
价格区间(终) price_max 500 最高单价(元,含税)
技术参数 param voltage:24V;protection:IP67 格式 “参数名:值;参数名:值”,需提前映射
供应商资质 cert iso9001,ce 多资质用逗号分隔(如 “iso9001,ce”)
库存状态 stock 1(现货)、0(含期货) 筛选现货商品
排序方式 sort price_asc(价格升序)、sales(销量降序) 见 “排序参数表”
分页 page 1 2 ... 30 页码,默认 1,最大 30
排序参数表依联网搜索支持工业采购常用排序方式,对应sort参数值如下:
排序方式 sort参数值 适用场景
综合推荐 空值 默认排序,平衡相关性与供应商资质
价格升序 price_asc 成本优先采购(如批量标准件)
价格降序 price_desc 高端设备筛选(如精密仪器)
销量降序 sales 爆款工业零件筛选(如通用传感器)
交货最快 delivery 紧急采购场景(如设备维修替换)
分类 ID 与技术参数映射
分类 ID:访问依联网分类页(https://www.yilianwang.com/category/),通过开发者工具查看类目链接的href(如/category/102/中的102为传感器分类 ID);
技术参数映射:通过商品详情页的参数表提取 “参数名 - 字段名” 映射(如 “额定电压” 对应voltage,“防护等级” 对应protection),用于param参数构建。
三、接口调用流程(基于页面解析)
以 “搜索防护等级 IP67 的 24V 接近开关,价格 100-500 元,仅看现货,按销量降序排序” 为例,流程为参数组装→URL 构建→请求发送→列表解析→分页遍历:
URL 构建示例组合参数生成目标搜索 URL:
python
运行
keyword = "接近开关"
cat_id = "102" # 传感器分类ID
price_min = 100
price_max = 500
param = "voltage:24V;protection:IP67" # 技术参数
cert = "iso9001" # 需ISO9001认证
stock = 1 # 仅现货
sort = "sales" # 销量降序
page = 1

关键词URL编码

encoded_keyword = urllib.parse.quote(keyword, encoding="utf-8")

构建URL

url = f"https://www.yilianwang.com/search/?keyword={encoded_keyword}&cat_id={cat_id}&price_min={price_min}&price_max={price_max}&param={param}&cert={cert}&stock={stock}&sort={sort}&page={page}"
请求头与反爬伪装模拟工业采购人员浏览器行为,需包含登录态 Cookie 以获取完整价格信息:
python
运行
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",
"Referer": "https://www.yilianwang.com/category/",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8",
"Cookie": "SESSION=xxx; user_token=xxx" # 登录后从浏览器获取
}
页面解析与数据提取搜索结果列表通常在 HTML 的

标签内,每条商品信息包含以下核心字段:
字段 解析方式(CSS 选择器示例) 说明
商品 ID 从a标签的href中提取(如/product/12345.html得12345) 唯一标识
标题 .product-title的文本 如 “E2E-X10ME1 24V 接近开关 IP67”
主图 .product-img img的src属性 商品主图 URL
含税单价 .price-tax的文本(去除 “¥” 和 “含税”) 如 “158.00”(元 / 个)
起订量 .moq的文本(提取数字) 如 “最小起订 10 个” 提取 “10”
核心参数 .param-tags span的文本列表 如["24V", "IP67", "NPN"]
供应商 .supplier-name的文本 如 “上海某自动化科技有限公司”
资质标签 .cert-tags span的文本列表 如["ISO9001", "CE"]
库存状态 .stock-tag的文本 如 “现货”“期货(7 天)”
分页处理
分页通过page参数控制,前 30 页为有效数据,超过则返回空结果;
终止条件:当前页商品数量 < 30(最后一页)或页码≥30;
分页间隔:每页请求间隔 4-6 秒(随机波动),工业平台对高频访问敏感,需严格控制频率。
四、代码实现示例(Python)
以下是item_search接口的完整实现,包含多条件筛选、分页遍历、数据解析及反爬处理:
import requests
import time
import random
import re
import urllib.parse
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
from typing import List, Dict

class YilianwangSearchApi:
def init(self, proxy_pool: List[str] = None, cookie: str = ""):
self.base_url = "https://www.yilianwang.com/search/"
self.ua = UserAgent()
self.proxy_pool = proxy_pool # 代理池列表,如["http://ip:port", ...]
self.cookie = cookie # 登录态Cookie(用于获取完整价格)

    # 分类ID映射(工业类目简化版)
    self.category_map = {
        "传感器": "102",
        "电机": "205",
        "PLC控制器": "301",
        "减速机": "403"
    }
    # 技术参数名映射(参数显示名→接口参数名)
    self.param_map = {
        "额定电压": "voltage",
        "防护等级": "protection",
        "安装方式": "installation",
        "检测距离": "distance"
    }

def _get_headers(self) -> Dict[str, str]:
    """生成随机请求头"""
    headers = {
        "User-Agent": self.ua.random,
        "Referer": "https://www.yilianwang.com/category/",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
    }
    if self.cookie:
        headers["Cookie"] = self.cookie
    return headers

def _get_proxy(self) -> Dict[str, str]:
    """随机获取代理"""
    if self.proxy_pool and len(self.proxy_pool) > 0:
        proxy = random.choice(self.proxy_pool)
        return {"http": proxy, "https": proxy}
    return None

def _clean_price(self, price_str: str) -> float:
    """清洗价格字符串(去除¥、含税、文字)"""
    if not price_str:
        return 0.0
    price_str = re.sub(r"[^\d.]", "", price_str)
    return float(price_str) if price_str else 0.0

def _clean_moq(self, moq_str: str) -> int:
    """清洗起订量(提取数字)"""
    if not moq_str:
        return 1
    moq_num = re.search(r"\d+", moq_str)
    return int(moq_num.group()) if moq_num else 1

def _parse_param(self, param_dict: Dict[str, str]) -> str:
    """将参数字典转换为接口param格式(如{"额定电压": "24V"} → "voltage:24V")"""
    param_list = []
    for display_name, value in param_dict.items():
        if display_name in self.param_map:
            param_key = self.param_map[display_name]
            param_list.append(f"{param_key}:{value}")
    return ";".join(param_list)

def _parse_item(self, item_soup) -> Dict[str, str]:
    """解析单条商品数据"""
    # 提取商品ID
    link = item_soup.select_one("a.product-title")["href"]
    item_id = re.search(r"/product/(\w+)\.html", link).group(1) if link else ""

    # 提取核心参数标签(如24V、IP67)
    core_params = [tag.text.strip() for tag in item_soup.select(".param-tags span")]

    # 提取供应商资质
    certifications = [tag.text.strip() for tag in item_soup.select(".cert-tags span")]

    return {
        "item_id": item_id,
        "title": item_soup.select_one(".product-title")?.text.strip() or "",
        "main_image": item_soup.select_one(".product-img img")?.get("src") or "",
        "url": f"https://www.yilianwang.com{link}" if link.startswith("/") else link,
        "price": {
            "current": self._clean_price(item_soup.select_one(".price-tax")?.text or ""),
            "min_order": self._clean_moq(item_soup.select_one(".moq")?.text or ""),
            "batch_discount": item_soup.select_one(".batch-discount")?.text.strip() or ""
        },
        "core_params": core_params,  # 核心技术参数标签
        "supplier": {
            "name": item_soup.select_one(".supplier-name")?.text.strip() or "",
            "location": item_soup.select_one(".supplier-location")?.text.strip() or "",
            "certifications": certifications
        },
        "trade": {
            "stock_status": item_soup.select_one(".stock-tag")?.text.strip() or "",
            "delivery_cycle": item_soup.select_one(".delivery-cycle")?.text.strip() or "",
            "sales_count": int(re.search(r"\d+", item_soup.select_one(".sales-count")?.text or "0").group()) if item_soup.select_one(".sales-count") else 0
        }
    }

def _parse_page(self, html: str) -> List[Dict]:
    """解析页面的商品列表"""
    soup = BeautifulSoup(html, "lxml")
    # 商品列表容器(需根据实际页面结构调整)
    item_list = soup.select("div.product-item")
    return [self._parse_item(item) for item in item_list if item]

def _get_total_pages(self, html: str) -> int:
    """获取总页数"""
    soup = BeautifulSoup(html, "lxml")
    page_box = soup.select_one(".pagination")
    if not page_box:
        return 1
    # 提取最后一页页码
    last_page = page_box.select("a")[-1].text.strip()
    return int(last_page) if last_page.isdigit() else 1

def item_search(self, 
               keyword: str = "", 
               category: str = "", 
               price_min: float = None, 
               price_max: float = None, 
               params: Dict[str, str] = None, 
               cert: List[str] = None, 
               stock: int = 0, 
               sort: str = "", 
               page_limit: int = 5) -> Dict:
    """
    搜索依联网商品列表
    :param keyword: 搜索关键词
    :param category: 分类名称(如“传感器”)或分类ID
    :param price_min: 最低价格(元)
    :param price_max: 最高价格(元)
    :param params: 技术参数字典(如{"额定电压": "24V", "防护等级": "IP67"})
    :param cert: 资质列表(如["iso9001", "ce"])
    :param stock: 库存状态(1=现货,0=全部)
    :param sort: 排序方式(price_asc/sales等)
    :param page_limit: 最大页数(默认5)
    :return: 标准化搜索结果
    """
    try:
        # 1. 参数预处理
        if not keyword and not category:
            return {"success": False, "error_msg": "关键词(keyword)和分类(category)至少需提供一个"}
        # 转换分类名称为ID
        if category in self.category_map:
            cat_id = self.category_map[category]
        else:
            cat_id = category if category else ""
        # 处理技术参数
        param_str = self._parse_param(params) if params else ""
        # 处理资质参数
        cert_str = ",".join(cert) if cert else ""
        # 编码关键词
        encoded_keyword = urllib.parse.quote(keyword, encoding="utf-8") if keyword else ""

        all_items = []
        current_page = 1

        while current_page <= page_limit:
            # 构建参数
            params = {
                "page": current_page
            }
            if encoded_keyword:
                params["keyword"] = encoded_keyword
            if cat_id:
                params["cat_id"] = cat_id
            if price_min is not None:
                params["price_min"] = price_min
            if price_max is not None:
                params["price_max"] = price_max
            if param_str:
                params["param"] = param_str
            if cert_str:
                params["cert"] = cert_str
            if stock in (0, 1):
                params["stock"] = stock
            if sort:
                params["sort"] = sort

            # 发送请求(带随机延迟)
            time.sleep(random.uniform(4, 6))  # 工业平台延迟需更高
            headers = self._get_headers()
            proxy = self._get_proxy()

            response = requests.get(
                url=self.base_url,
                params=params,
                headers=headers,
                proxies=proxy,
                timeout=10
            )
            response.raise_for_status()
            html = response.text

            # 解析当前页商品
            items = self._parse_page(html)
            if not items:
                break  # 无数据,终止分页

            all_items.extend(items)

            # 获取总页数(仅第一页需要)
            if current_page == 1:
                total_pages = self._get_total_pages(html)
                # 修正最大页数(不超过page_limit和30)
                total_pages = min(total_pages, page_limit, 30)
                if total_pages < current_page:
                    break

            # 若当前页是最后一页,终止
            if current_page >= total_pages:
                break

            current_page += 1

        # 去重(基于item_id)
        seen_ids = set()
        unique_items = []
        for item in all_items:
            if item["item_id"] not in seen_ids:
                seen_ids.add(item["item_id"])
                unique_items.append(item)

        return {
            "success": True,
            "total": len(unique_items),
            "page_processed": current_page,
            "items": unique_items
        }

    except requests.exceptions.HTTPError as e:
        if "403" in str(e):
            return {"success": False, "error_msg": "触发反爬,建议更换代理或Cookie", "code": 403}
        if "401" in str(e):
            return {"success": False, "error_msg": "需要登录,请提供有效Cookie", "code": 401}
        return {"success": False, "error_msg": f"HTTP错误: {str(e)}", "code": response.status_code}
    except Exception as e:
        return {"success": False, "error_msg": f"搜索失败: {str(e)}", "code": -1}

使用示例

if name == "main":

# 代理池(替换为有效代理)
PROXIES = [
    "http://123.45.67.89:8888",
    "http://98.76.54.32:8080"
]
# 登录态Cookie(从浏览器获取,用于完整价格)
COOKIE = "SESSION=xxx; user_token=xxx"

# 初始化API客户端
search_api = YilianwangSearchApi(proxy_pool=PROXIES, cookie=COOKIE)

# 搜索“接近开关”,分类“传感器”,价格100-500元,技术参数24V+IP67,ISO9001认证,仅现货,按销量降序,最多3页
result = search_api.item_search(
    keyword="接近开关",
    category="传感器",
    price_min=100,
    price_max=500,
    params={"额定电压": "24V", "防护等级": "IP67"},
    cert=["iso9001"],
    stock=1,
    sort="sales",
    page_limit=3
)

if result["success"]:
    print(f"搜索成功:共找到 {result['total']} 件商品,处理 {result['page_processed']} 页")
    for i, item in enumerate(result["items"][:5]):  # 打印前5条
        print(f"\n商品 {i+1}:")
        print(f"标题:{item['title'][:50]}...")  # 截断长标题
        print(f"价格:¥{item['price']['current']} | 起订量:{item['price']['min_order']}件 | 折扣:{item['price']['batch_discount']}")
        print(f"核心参数:{', '.join(item['core_params'])}")
        print(f"供应商:{item['supplier']['name']}({item['supplier']['location']}) | 资质:{', '.join(item['supplier']['certifications'])}")
        print(f"交易信息:{item['trade']['stock_status']} | 交货周期:{item['trade']['delivery_cycle']} | 已售:{item['trade']['sales_count']}件")
        print(f"详情页:{item['url']}")
else:
    print(f"搜索失败:{result['error_msg']}(错误码:{result.get('code')})")

五、关键技术难点与解决方案
工业技术参数筛选(param 参数构建)
问题:技术参数是工业搜索的核心条件(如 “24V 电压”“IP67 防护”),但平台接口要求参数名与前端显示名不一致(如 “额定电压” 对应voltage),需精准映射。
解决方案:
建立 “显示名 - 接口参数名” 映射表(如param_map中 “防护等级” 对应protection),用户输入显示名时自动转换;
对复杂参数(如 “安装方式 = 嵌入式”),通过详情页参数表逆向获取完整键值对,确保筛选生效;
示例代码中_parse_param函数自动转换参数字典为接口格式,降低使用门槛。
多规格商品处理
问题:工业商品常含多型号 / 规格(如 “电压 24V/110V”),列表页需区分核心规格差异,避免采购错误。
解决方案:
提取.param-tags中的规格标签(如["24V", "110V"]),结构化存储为core_params字段;
价格字段标注 “多规格”,引导用户通过item_get接口获取详细规格报价;
对关键规格(如电压、功率)进行优先级排序,确保列表页优先展示核心差异。
反爬机制对抗
问题:依联网作为工业采购平台,对异常访问敏感,高频请求会触发 IP 封锁(403 错误)或会话失效,影响数据连续性。
解决方案:
代理 IP 策略:使用高匿代理池,优先选择工业集中地区(长三角、珠三角)的 IP,每 3 页切换一次;
请求频率控制:单 IP 每分钟请求≤1 次,两次请求间隔 4-6 秒(模拟采购人员仔细比对参数的行为);
Cookie 池管理:维护多个登录态 Cookie(通过不同企业账号获取),随机携带以降低单一账号风险;
异常重试:对 403 错误,延迟 10 秒后用新代理 + 新 Cookie 重试,最多 3 次,确保关键数据获取。
供应商资质筛选(cert 参数)
问题:工业采购对供应商资质要求严格(如 ISO9001、CE 认证),但资质标签格式多样(如 “ISO 9001”“ISO9001 认证”),需统一匹配。
解决方案:
建立资质关键词映射表(如 “iso9001” 匹配 “ISO 9001”“ISO9001 认证”);
cert参数传入标准化资质代码(如iso9001),接口自动匹配包含该关键词的供应商;
结果中保留原始资质标签(如["ISO9001认证", "CE"]),便于人工复核。
六、最佳实践与合规要点
系统架构设计采用 “精准低频采集” 架构,适配工业平台特性:
任务分发层:通过消息队列(如 RabbitMQ)分发搜索任务,控制单任务并发数≤1;
采集层:多节点并行采集,每个节点绑定独立代理池(含工业集中区 IP),节点间请求间隔≥10 秒;
存储层:用 Redis 缓存热门搜索结果(48 小时过期,工业商品数据更新慢),MySQL 存储历史数据(用于供应商评估);
监控层:实时监控代理存活率、参数筛选有效性,异常时通过企业微信告警。
性能优化策略
异步批量搜索:使用aiohttp并发处理多关键词(如 “接近开关”“光电开关”),控制并发数≤1,适配低频率限制;
按需解析:列表页优先提取item_id、价格、核心参数等关键字段,详细技术参数通过后续item_get接口补充;
热点抑制:对同一关键词 + 参数组合的搜索,24 小时内仅处理 1 次(返回缓存结果)。
合规性与风险控制
访问限制:单 IP 日搜索请求≤30 次,避免对平台服务器造成压力,符合工业平台访问规范;
数据使用边界:不得将数据用于恶意竞价、商业泄露或伪造供应商资质,需注明数据来源 “依联网”;
行业合规:工业参数涉及安全生产标准,使用时需遵守《标准化法》《产品质量法》,确保参数准确性,避免因数据错误导致采购风险。
七、总结
依联网item_search接口的对接核心在于工业技术参数的精准映射(param 参数构建)、供应商资质的有效筛选及低频率高稳定性的采集策略。开发者需重点关注:
技术参数 “显示名 - 接口名” 映射表的维护(确保筛选条件生效);
多规格商品的核心参数提取(避免采购错误);
代理池与请求频率的精细化控制(应对严格反爬)。
通过本文的技术方案,可构建稳定的工业商品搜索系统,为工业采购、供应链分析等场景提供可靠数据支持。实际应用中,需根据平台最新页面结构动态调整解析规则,平衡数据获取效率与合规性。
需要进一步了解工业参数映射表的完整版本或供应商资质匹配规则,可以告诉我,我会补充相关内容

相关文章
|
3月前
|
数据采集 JSON 前端开发
从Bing图片搜索JSON API直接获取数据
从Bing图片搜索JSON API直接获取数据
|
机器学习/深度学习 自动驾驶 机器人
【论文速递】BEVFormer: 通过时空变换器从多相机图像中学习BEV表示
【论文速递】BEVFormer: 通过时空变换器从多相机图像中学习BEV表示
|
5月前
|
人工智能 自然语言处理 API
快速集成GPT-4o:下一代多模态AI实战指南
快速集成GPT-4o:下一代多模态AI实战指南
496 101
|
4月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
491 4
|
11月前
|
人工智能 运维 安全
重塑高校计算机实验室:从硬件到开源应用聚合与托管平台的转型
高校计算机实验室面临环境碎片化、资源分配失衡及安全管控难题。WebSoft9提出四维重构框架,从硬件层融合异构资源、应用层聚合开源工具链、运维层实现智能管理到教学科研协同优化,助力实验室转型。通过AI教学与跨校区协作等实战案例,展示其高效解决方案。建议分阶段实施,先搭建基础平台再逐步扩展功能,同时注重权限分级与混合云备份以规避风险。
463 0
重塑高校计算机实验室:从硬件到开源应用聚合与托管平台的转型
|
9月前
|
敏捷开发 测试技术 BI
Codes 项目管理软件随着产品功能越来越多,如何实现功能深度与易用性的平衡
如何在功能深度与易用性之间找到平衡?Codes 通过项目模板实现功能隔离,为不同需求提供定制化解决方案。从简单的任务管理到复杂的全流程项目管理,Codes 提供了19个细化模板,涵盖敏捷、瀑布、IPD等多种模式,满足从小团队到专业用户的多样化需求。每个模板均有场景说明、流程图和页面预览,帮助用户快速上手。此外,Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端与本地部署,对15人以下团队免费,通过创新功能如“事找人”、自动生成周报等简化研发协同工作,助力敏捷开发落地。
Codes 项目管理软件随着产品功能越来越多,如何实现功能深度与易用性的平衡
|
SQL 监控 安全
计算机硬件清洁与防尘
【8月更文挑战第2天】
1078 1
|
前端开发 容器
彻底学会 css grid布局
【4月更文挑战第19天】CSS Grid布局是二维布局的强大工具,涉及核心概念:网格容器、网格项、网格线和轨道。关键属性包括定义列行的`grid-template-columns/rows`、区域布局的`grid-template-areas`、间距的`grid-gap`、对齐方式的`justify-content/align-items`以及简写形式`place-content/place-items`。学习过程需结合实践,通过探索不同属性和值的组合,实现复杂布局。深入了解和不断练习将提升布局设计能力。
345 6
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
932 0