<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    Python 爬蟲如何獲取淘寶商品的 SKU 詳細信息:實戰指南

    管理 管理 編輯 刪除

    在電商數據分析和商品管理中,獲取淘寶商品的 SKU(庫存進出計量的基本單元)詳細信息是一項重要任務。SKU 信息通常包括商品的顏色、尺寸、規格等屬性,這些信息對于庫存管理和價格監控非常關鍵。本文將詳細介紹如何使用 Python 和 requests、BeautifulSoup 以及 Selenium 獲取淘寶商品的 SKU 詳細信息,并提供完整的代碼示例。

    一、準備工作

    1. 安裝必要的庫

    確保你的開發環境中已經安裝了以下庫:

    • requests:用于發送 HTTP 請求。
    • BeautifulSoup:用于解析 HTML 內容。
    • Selenium:用于處理動態加載的內容。
    • 可以通過以下命令安裝這些庫:

    bash

    pip install requests beautifulsoup4 selenium
    

    2. 下載 ChromeDriver

    為了使用 Selenium,需要下載與你的瀏覽器版本匹配的 ChromeDriver,并確保其路徑正確配置。

    二、獲取商品詳情頁的 HTML 內容

    1. 使用 requests 獲取靜態內容

    如果商品詳情頁的內容是靜態的,可以直接使用 requests 獲取 HTML 內容。

    Python


    import requests
    from bs4 import BeautifulSoup
    
    def get_product_detail_page(url):
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
        }
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        else:
            print("Failed to retrieve the page")
            return None
            

    2. 使用 Selenium 獲取動態內容

    如果商品詳情頁的內容是動態加載的,需要使用 Selenium 獲取完整的頁面內容。

    Python


    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    import time
    
    def get_product_detail_page_dynamic(url):
        options = webdriver.ChromeOptions()
        options.add_argument('--headless')  # 無頭模式
        driver = webdriver.Chrome(options=options)
        driver.get(url)
        
        # 等待頁面加載完成
        time.sleep(3)
        
        page_source = driver.page_source
        driver.quit()
        return page_source
        

    三、解析商品詳情頁中的 SKU 信息

    1. 定位 SKU 信息的 HTML 結構

    SKU 信息通常位于商品詳情頁的某個特定區域,例如 <div> 或 <ul> 標簽中。常見的位置包括:

    • 規格參數表格:通常以表格形式展示,例如 <table> 標簽。
    • SKU 選擇區域:通常以下拉菜單或選項卡的形式展示,例如 <select> 或 <ul> 標簽。

    2. 提取 SKU 信息

    使用 BeautifulSoup 提取 SKU 信息。以下代碼展示了如何解析靜態和動態加載的 SKU 信息。

    示例代碼:解析靜態內容

    Python


    from bs4 import BeautifulSoup
    
    def parse_sku_info(html):
        soup = BeautifulSoup(html, 'html.parser')
        sku_info = {}
        
        # 定位 SKU 屬性區域
        sku_properties = soup.select('div.sku-property')
        for sku_property in sku_properties:
            property_name = sku_property.select_one('div.sku-title').text.strip()
            options = [option.text.strip() for option in sku_property.select('ul.sku-list li')]
            sku_info[property_name] = options
        
        return sku_info
    
    # 示例:獲取靜態內容
    url = "https://example.com/product-detail-page.html"
    html = get_product_detail_page(url)
    if html:
        sku_info = parse_sku_info(html)
        for key, value in sku_info.items():
            print(f"SKU 屬性: {key}")
            for option in value:
                print(f"  選項: {option}")
                

    示例代碼:解析動態內容

    Python


    from bs4 import BeautifulSoup
    
    def parse_sku_info_dynamic(html):
        soup = BeautifulSoup(html, 'html.parser')
        sku_info = {}
        
        # 定位 SKU 屬性區域
        sku_properties = soup.select('div.sku-property')
        for sku_property in sku_properties:
            property_name = sku_property.select_one('div.sku-title').text.strip()
            options = [option.text.strip() for option in sku_property.select('ul.sku-list li')]
            sku_info[property_name] = options
        
        return sku_info
    
    # 示例:獲取動態內容
    url = "https://example.com/product-detail-page.html"
    html = get_product_detail_page_dynamic(url)
    if html:
        sku_info = parse_sku_info_dynamic(html)
        for key, value in sku_info.items():
            print(f"SKU 屬性: {key}")
            for option in value:
                print(f"  選項: {option}")
                

    四、注意事項

    1. 動態內容處理

    如果 SKU 信息是通過 JavaScript 動態加載的,建議使用 Selenium 獲取完整的頁面內容。

    2. 遵守法律法規

    在使用爬蟲時,務必遵守目標網站的 robots.txt 文件和相關法律法規,避免對目標網站造成不必要的負擔或違反法律。

    3. 異常處理

    在解析過程中,可能會遇到各種異常情況,如網絡請求失敗、HTML 結構變化等。因此,需要在代碼中添加完善的異常處理邏輯,確保爬蟲的穩定運行。

    4. HTML 結構變化

    淘寶商品詳情頁的 HTML 結構可能會發生變化,因此需要定期檢查并更新選擇器。

    5. 使用代理 IP

    為了避免被封禁,建議使用代理 IP 池,定期更換 IP 地址。

    五、完整示例代碼

    以下是一個完整的示例代碼,展示如何獲取淘寶商品的 SKU 詳細信息

    Python


    import requests
    from bs4 import BeautifulSoup
    from selenium import webdriver
    import time
    
    def get_product_detail_page(url):
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
        }
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        else:
            print("Failed to retrieve the page")
            return None
    
    def get_product_detail_page_dynamic(url):
        options = webdriver.ChromeOptions()
        options.add_argument('--headless')  # 無頭模式
        driver = webdriver.Chrome(options=options)
        driver.get(url)
        
        # 等待頁面加載完成
        time.sleep(3)
        
        page_source = driver.page_source
        driver.quit()
        return page_source
    
    def parse_sku_info(html):
        soup = BeautifulSoup(html, 'html.parser')
        sku_info = {}
        
        # 定位 SKU 屬性區域
        sku_properties = soup.select('div.sku-property')
        for sku_property in sku_properties:
            property_name = sku_property.select_one('div.sku-title').text.strip()
            options = [option.text.strip() for option in sku_property.select('ul.sku-list li')]
            sku_info[property_name] = options
        
        return sku_info
    
    # 示例:獲取靜態內容
    url = "https://example.com/product-detail-page.html"
    html = get_product_detail_page(url)
    if html:
        sku_info = parse_sku_info(html)
        for key, value in sku_info.items():
            print(f"SKU 屬性: {key}")
            for option in value:
                print(f"  選項: {option}")
    
    # 示例:獲取動態內容
    url = "https://example.com/product-detail-page.html"
    html = get_product_detail_page_dynamic(url)
    if html:
        sku_info = parse_sku_info(html)
        for key, value in sku_info.items():
            print(f"SKU 屬性: {key}")
            for option in value:
                print(f"  選項: {option}")
                

    六、總結

    通過上述步驟和示例代碼,你可以輕松地獲取淘寶商品的 SKU 詳細信息。希望這個教程對你有所幫助!


    請登錄后查看

    one-Jason 最后編輯于2025-04-21 16:06:50

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    450
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服