Python爬蟲實戰——使用NetNut網頁解鎖器獲取亞馬遜電商數據

文章目錄

  • 一、電商數據的作用
    • 1.1 支撐科學決策,降低試錯成本
    • 1.2 提升運營效率,實現降本增效
    • 1.3 深化用戶理解,驅動個性化服務
    • 1.4 監測競品動態,制定差異化策略
    • 1.5 驅動產品創新,滿足用戶需求
  • 二、爬取目標
  • 三、環境準備
  • 四、NetNut網頁解鎖器介紹
    • 4.1 特點
    • 4.2 免費申請
  • 五、使用網頁解鎖器實戰
    • 5.1 導入模塊
    • 5.2 發送請求獲取網頁源碼
    • 5.3 解析數據
    • 5.4 保存數據
    • 5.5 完整源碼
    • 5.6 結果展示
    • 六、總結

一、電商數據的作用

采集電商數據的意義在于通過系統化收集和分析運營中產生的各類信息,為企業提供決策依據、優化業務流程、提升競爭力。其核心作用可簡要概括為以下方面:

1.1 支撐科學決策,降低試錯成本

  • 市場洞察:通過采集行業趨勢、競品動態、用戶需求等數據,幫助企業避開“拍腦袋”決策,制定符合市場規律的戰略。
  • 定價優化:分析競品價格、用戶價格敏感度,動態調整定價策略,平衡銷量與利潤。

1.2 提升運營效率,實現降本增效

  • 供應鏈優化:基于銷售預測和庫存數據,實現“以銷定產”,減少積壓或缺貨風險。
  • 物流優化:通過訂單分布和配送路徑數據,縮短配送時間,降低物流成本。

1.3 深化用戶理解,驅動個性化服務

  • 用戶畫像構建:采集瀏覽、購買、評價等行為數據,精準定位用戶需求,實現個性化推薦和精準營銷。
  • 體驗提升:分析用戶反饋和客服數據,優化產品功能和服務流程,增強用戶粘性。

1.4 監測競品動態,制定差異化策略

  • 競品分析:實時跟蹤競品價格、促銷活動、營銷策略,快速響應市場變化,避免同質化競爭。
  • 機會挖掘:通過競品數據發現市場空白點,為產品創新或細分市場拓展提供方向。

1.5 驅動產品創新,滿足用戶需求

  • 反饋閉環:通過用戶評價、退貨原因等數據,發現產品痛點,指導產品迭代和功能優化。
  • C2M定制:基于用戶需求數據反向定制產品,降低庫存風險,提升市場響應速度。

二、爬取目標

本次的爬取目標是亞馬遜電商網站中,蘋果最新發布的AirPods Pro3商品信息,字段如下:商品標題、價格、品牌、顏色、耳部放置、外型規格、噪音控制、型號名稱、連接技術、無線通信技術、隨附部件、商品具體用途、產品的推薦用途、兼容的設備、控制類型、線纜特征、防水級別、控制方法、商品數量、控制器類型、UPC、特殊功能、制造商、包裝尺寸、商品重量、ASIN、型號、電池、上架時間、箱內物品:

在這里插入圖片描述

三、環境準備

Python:3.10

編輯器:PyCharm

第三方模塊,自行安裝:

pip install requests # 爬蟲模塊
pip install lxml # 解析網頁模塊
pip install pandas # 數據處理模塊

四、NetNut網頁解鎖器介紹

4.1 特點

1、先進的反反爬蟲技術:有效繞過網站實施的反抓取措施
2、自動輪換IP管理:根據網站復雜程度動態輪換IP地址
3、驗證碼解決能力:解決驗證碼,模仿真實用戶行為
4、自定義 HTTP 標頭管理:適應特定于站點的要求以提高抓取效率

在這里插入圖片描述

4.2 免費申請

1、打開官網選擇注冊(Netnut代理IP):

在這里插入圖片描述

2、注冊登錄好以后來到控制面板,切換語言為中文:

在這里插入圖片描述

3、點擊集成示例:

在這里插入圖片描述

4、產品有五種可以供我們選擇,這里我們用Web Unblocker(網頁解鎖器)進行測試:
Datacenter:數據中心IP
Residential:住宅IP
Static Residential:靜態住宅IP
Mobile:移動IP
Web Unblocker:網頁解鎖器

在這里插入圖片描述

5、一共有100多個國家代理地址可以供我們選擇,可以滿足各種跨國業務需求,真的太棒了:

在這里插入圖片描述

6、選擇Python代碼進行復制,后續替換代碼中的用戶名和密碼即可:

在這里插入圖片描述

7、封裝為一個函數方便調用,注意這里需要替換為你自己的NetNut代理用戶名和密碼:

def get_ip():proxies = {"http": "http://你的用戶名:你的密碼@unblocker.netnut.io:5959","https": "http://你的用戶名:你的密碼@unblocker.netnut.io:5959"}return proxies

五、使用網頁解鎖器實戰

5.1 導入模塊

import requests  # python基礎爬蟲庫
from lxml import etree  # 可以將網頁轉換為Elements對象
import pandas as pd  # pandas,用于寫入Excel文件

5.2 發送請求獲取網頁源碼

(1)我們先來試試不使用網頁解鎖器發送請求:

def get_html_str(url):"""不使用網頁解鎖器"""headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.97 Safari/537.36 Core/1.116.559.400 QQBrowser/19.6.6683.400'}response = requests.get(url, headers=headers, verify=False)html_str = response.textprint(html_str)return html_str

可以看到返回的網頁源碼特別短,且沒有我們需要的數據,這是因為亞馬遜電商網站有反爬蟲措施識別到了我們的爬蟲代碼:

在這里插入圖片描述

(2)我們攜帶網頁解鎖器發送請求獲取網頁源碼:

def get_html_str(url):headers = {'x-netnut-html-render': 'true'}# 使用網頁解析器proxies = get_ip()response = requests.get(url, headers=headers,proxies=proxies, verify=False)  #html_str = response.textprint(html_str)return html_str

可以看到返回的網頁源碼特別長,并且可以搜到我們需要的數據,NetNut網頁解鎖器簡直太強了,可以有效解決請求頭檢測、IP檢測、驗證碼檢測等,可以模仿真實用戶行為進行訪問:

在這里插入圖片描述

5.3 解析數據

我們這里寫一個get_data(html_str)函數,傳入當前頁的網頁源碼,然后用xpath解析數據:

def get_data(html_str):# 將html字符串轉換為etree對象方便后面使用xpath進行解析html_data = etree.HTML(html_str)# 利用xpath取到所有的li標簽# 標題title = html_data.xpath('//span[@id="productTitle"]/text()')[0].strip()# 價格price = html_data.xpath('//span[@class="a-price-whole"]/text()')[0].strip()price = '$' + price# 品牌Brand = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[1]/td[2]/span/text()')[0].strip()# 顏色Color = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[2]/td[2]/span/text()')[0].strip()# 耳部放置Ear_Placement = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[3]/td[2]/span/text()')[0].strip()# 外型規格Form_Factor = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[4]/td[2]/span/text()')[0].strip()# 噪音控制Noise_Control = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[5]/td[2]/span/text()')[0].strip()# 型號名稱Model_Name = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[1]/td/text()')Model_Name = Model_Name[0].strip().replace('\u200e','')# 連接技術Connectivity_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[2]/td/text()')Connectivity_Technology = Connectivity_Technology[0].strip().replace('\u200e', '')# 無線通信技術Wireless_Communication_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[3]/td/text()')Wireless_Communication_Technology = Wireless_Communication_Technology[0].strip().replace('\u200e', '')# 隨附部件Included_Components = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[4]/td/text()')Included_Components = Included_Components[0].strip().replace('\u200e', '')# 商品具體用途Specific_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[5]/td/text()')Specific_Uses_For_Product = Specific_Uses_For_Product[0].strip().replace('\u200e', '')# 產品的推薦用途Recommended_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[6]/td/text()')Recommended_Uses_For_Product = Recommended_Uses_For_Product[0].strip().replace('\u200e', '')# 兼容的設備Compatible_Devices = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[7]/td/text()')Compatible_Devices = Compatible_Devices[0].strip().replace('\u200e', '')# 控制類型Control_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[8]/td/text()')Control_Type = Control_Type[0].strip().replace('\u200e', '')# 線纜特征Cable_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[9]/td/text()')Cable_Feature = Cable_Feature[0].strip().replace('\u200e', '')# 防水級別Water_Resistance_Level = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[10]/td/text()')Water_Resistance_Level = Water_Resistance_Level[0].strip().replace('\u200e', '')# 控制方法Control_Method = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[11]/td/text()')Control_Method = Control_Method[0].strip().replace('\u200e', '')# 商品數量Number_of_Items = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[12]/td/text()')Number_of_Items = Number_of_Items[0].strip().replace('\u200e', '')# 控制器類型Controller_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[13]/td/text()')Controller_Type = Controller_Type[0].strip().replace('\u200e', '')# UPCUPC = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[14]/td/text()')UPC = UPC[0].strip().replace('\u200e', '')# 特殊功能Special_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[15]/td/text()')Special_Feature = Special_Feature[0].strip().replace('\u200e', '')# 制造商Manufacturer = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[16]/td/text()')Manufacturer = Manufacturer[0].strip().replace('\u200e', '')# 包裝尺寸Package_Dimensions = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[17]/td/text()')Package_Dimensions = Package_Dimensions[0].strip().replace('\u200e', '')# 商品重量Item_Weight = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[18]/td/text()')Item_Weight = Item_Weight[0].strip().replace('\u200e', '')# ASINASIN = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[19]/td/text()')ASIN = ASIN[0].strip().replace('\u200e', '')# 型號Item_model_number = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[20]/td/text()')Item_model_number = Item_model_number[0].strip().replace('\u200e', '')# 電池Batteries = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[21]/td/text()')Batteries = Batteries[0].strip().replace('\u200e', '')# 上架時間Date_First_Available = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[22]/td/text()')Date_First_Available = Date_First_Available[0].strip().replace('\u200e', '')return {'商品標題':title,'價格':price,'品牌':Brand,'顏色':Color,'耳部放置':Ear_Placement,'外型規格':Form_Factor,'噪音控制':Noise_Control,'型號名稱': Model_Name, '連接技術': Connectivity_Technology,'無線通信技術': Wireless_Communication_Technology, '隨附部件': Included_Components,'商品具體用途': Specific_Uses_For_Product, '產品的推薦用途': Recommended_Uses_For_Product,'兼容的設備': Compatible_Devices,'控制類型': Control_Type, '線纜特征': Cable_Feature, '防水級別': Water_Resistance_Level,'控制方法': Control_Method, '商品數量': Number_of_Items,'控制器類型': Controller_Type, 'UPC': UPC, '特殊功能': Special_Feature, '制造商': Manufacturer,'包裝尺寸': Package_Dimensions,'商品重量': Item_Weight, 'ASIN': ASIN, '型號': Item_model_number, '電池': Batteries,'上架時間': Date_First_Available}

5.4 保存數據

將獲取到的數據寫入Excel,當然如果你有數據庫也可以寫入數據庫:

def save_excel(data):# 轉換為適合DataFrame的格式formatted_data = [{'字段': key, '內容': value} for key, value in data.items()]# 創建DataFramedf = pd.DataFrame(formatted_data)# 寫入exceldf.to_excel('電商數據.xlsx',index=False)

5.5 完整源碼

注意:下面get_ip()函數,需要看4.2教程換成自己的NetNut代理的用戶名和密碼:

import requests  # python基礎爬蟲庫
from lxml import etree  # 可以將網頁轉換為Elements對象
import pandas as pd  # pandas,用于寫入Excel文件def get_ip():proxies = {"http": "http://你的用戶名:你的密碼@unblocker.netnut.io:5959","https": "http://你的用戶名:你的密碼@unblocker.netnut.io:5959"}return proxies# def get_html_str(url):
#     """不使用網頁解鎖器"""
#     headers = {
#         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.97 Safari/537.36 Core/1.116.559.400 QQBrowser/19.6.6683.400'
#     }
#     response = requests.get(url, headers=headers, verify=False)
#     html_str = response.text
#     print(html_str)
#     return html_strdef get_html_str(url):"""使用網頁解鎖器"""headers = {'x-netnut-html-render': 'true'}# 使用網頁解析器proxies = get_ip()response = requests.get(url, headers=headers, proxies=proxies, verify=False)html_str = response.textprint(html_str)return html_strdef get_data(html_str):# 將html字符串轉換為etree對象方便后面使用xpath進行解析html_data = etree.HTML(html_str)# 利用xpath取到所有的li標簽# 標題title = html_data.xpath('//span[@id="productTitle"]/text()')[0].strip()# 價格price = html_data.xpath('//span[@class="a-price-whole"]/text()')[0].strip()price = '$' + price# 品牌Brand = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[1]/td[2]/span/text()')[0].strip()# 顏色Color = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[2]/td[2]/span/text()')[0].strip()# 耳部放置Ear_Placement = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[3]/td[2]/span/text()')[0].strip()# 外型規格Form_Factor = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[4]/td[2]/span/text()')[0].strip()# 噪音控制Noise_Control = html_data.xpath('/html/body/div[2]/div/div/div[12]/div[45]/div/table/tbody/tr[5]/td[2]/span/text()')[0].strip()# 型號名稱Model_Name = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[1]/td/text()')Model_Name = Model_Name[0].strip().replace('\u200e','')# 連接技術Connectivity_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[2]/td/text()')Connectivity_Technology = Connectivity_Technology[0].strip().replace('\u200e', '')# 無線通信技術Wireless_Communication_Technology = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[3]/td/text()')Wireless_Communication_Technology = Wireless_Communication_Technology[0].strip().replace('\u200e', '')# 隨附部件Included_Components = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[4]/td/text()')Included_Components = Included_Components[0].strip().replace('\u200e', '')# 商品具體用途Specific_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[5]/td/text()')Specific_Uses_For_Product = Specific_Uses_For_Product[0].strip().replace('\u200e', '')# 產品的推薦用途Recommended_Uses_For_Product = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[6]/td/text()')Recommended_Uses_For_Product = Recommended_Uses_For_Product[0].strip().replace('\u200e', '')# 兼容的設備Compatible_Devices = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[7]/td/text()')Compatible_Devices = Compatible_Devices[0].strip().replace('\u200e', '')# 控制類型Control_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[8]/td/text()')Control_Type = Control_Type[0].strip().replace('\u200e', '')# 線纜特征Cable_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[9]/td/text()')Cable_Feature = Cable_Feature[0].strip().replace('\u200e', '')# 防水級別Water_Resistance_Level = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[10]/td/text()')Water_Resistance_Level = Water_Resistance_Level[0].strip().replace('\u200e', '')# 控制方法Control_Method = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[11]/td/text()')Control_Method = Control_Method[0].strip().replace('\u200e', '')# 商品數量Number_of_Items = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[12]/td/text()')Number_of_Items = Number_of_Items[0].strip().replace('\u200e', '')# 控制器類型Controller_Type = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[13]/td/text()')Controller_Type = Controller_Type[0].strip().replace('\u200e', '')# UPCUPC = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[14]/td/text()')UPC = UPC[0].strip().replace('\u200e', '')# 特殊功能Special_Feature = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[15]/td/text()')Special_Feature = Special_Feature[0].strip().replace('\u200e', '')# 制造商Manufacturer = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[16]/td/text()')Manufacturer = Manufacturer[0].strip().replace('\u200e', '')# 包裝尺寸Package_Dimensions = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[17]/td/text()')Package_Dimensions = Package_Dimensions[0].strip().replace('\u200e', '')# 商品重量Item_Weight = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[18]/td/text()')Item_Weight = Item_Weight[0].strip().replace('\u200e', '')# ASINASIN = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[19]/td/text()')ASIN = ASIN[0].strip().replace('\u200e', '')# 型號Item_model_number = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[20]/td/text()')Item_model_number = Item_model_number[0].strip().replace('\u200e', '')# 電池Batteries = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[21]/td/text()')Batteries = Batteries[0].strip().replace('\u200e', '')# 上架時間Date_First_Available = html_data.xpath('/html/body/div[2]/div/div/div[97]/div/div/div/div/div/div[1]/div[1]/div/div[2]/div/div/table/tbody/tr[22]/td/text()')Date_First_Available = Date_First_Available[0].strip().replace('\u200e', '')return {'商品標題':title,'價格':price,'品牌':Brand,'顏色':Color,'耳部放置':Ear_Placement,'外型規格':Form_Factor,'噪音控制':Noise_Control,'型號名稱': Model_Name, '連接技術': Connectivity_Technology,'無線通信技術': Wireless_Communication_Technology, '隨附部件': Included_Components,'商品具體用途': Specific_Uses_For_Product, '產品的推薦用途': Recommended_Uses_For_Product,'兼容的設備': Compatible_Devices,'控制類型': Control_Type, '線纜特征': Cable_Feature, '防水級別': Water_Resistance_Level,'控制方法': Control_Method, '商品數量': Number_of_Items,'控制器類型': Controller_Type, 'UPC': UPC, '特殊功能': Special_Feature, '制造商': Manufacturer,'包裝尺寸': Package_Dimensions,'商品重量': Item_Weight, 'ASIN': ASIN, '型號': Item_model_number, '電池': Batteries,'上架時間': Date_First_Available}def save_excel(data):# 轉換為適合DataFrame的格式formatted_data = [{'字段': key, '內容': value} for key, value in data.items()]# 創建DataFramedf = pd.DataFrame(formatted_data)# 寫入exceldf.to_excel('電商數據.xlsx',index=False)if __name__ == '__main__':url = 'https://www.amazon.com/gp/aw/d/B0FQFB8FMG/?_encoding=UTF8&pd_rd_plhdr=t&aaxitk=2c961813ca337245359ad083c19b8f5f&hsa_cr_id=0&qid=1757486466&sr=1-1-9e67e56a-6f64-441f-a281-df67fc737124&ref_=sbx_be_s_sparkle_lsi4d_asin_0_img&pd_rd_w=AqboJ&content-id=amzn1.sym.9f2b2b9e-47e9-4764-a4dc-2be2f6fca36d%3Aamzn1.sym.9f2b2b9e-47e9-4764-a4dc-2be2f6fca36d&pf_rd_p=9f2b2b9e-47e9-4764-a4dc-2be2f6fca36d&pf_rd_r=6HKX09G15YB6TRQAMP8J&pd_rd_wg=MziL3&pd_rd_r=2ee0b16d-b4ad-422e-a768-b3e26a6d8724'# 一、發送請求,獲取網頁源碼html_str = get_html_str(url)# 二、解析數據data = get_data(html_str)# 三、保存數據save_excel(data)

5.6 結果展示

使用NetNut網頁解鎖器輕松獲取到數據,并且在當前路徑下生成Excel文件:

在這里插入圖片描述

六、總結

代理對于爬蟲是密不可分的,但使用代理需要遵守相關法律法規和目標網站的使用規則。NetNut代理覆蓋全球195個國家,8500萬優質IP,全方位滿足網頁數據抓取。提供四種代理IP服務:動態住宅,靜態ISP,移動代理,數據中心代理,憑借網頁解鎖器的強大功能可以采集各種場景的數據,并且現在在做國慶促銷有需要的小伙伴們可以試試:Netnut代理IP

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/923660.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/923660.shtml
英文地址,請注明出處:http://en.pswp.cn/news/923660.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

超越NAT:如何構建高效、安全的內網穿透隧道

在敏捷開發和分布式協作成為主流的今天,開發者需要一個能夠將本地開發環境瞬間暴露給公網的能力,以便進行演示、聯調或處理回調。傳統方案如配置路由器端口映射或部署VPN,不僅繁瑣且存在安全風險。內網穿透技術,特別是以 ngrok、Z…

第二十三章 ESP32S3 RTC 實驗

本章介紹 ESP32-S3 實時時鐘(RTC)的使用,實時時鐘能為系統提供一個準確的時間,即時系統復位或主電源斷電, RTC 依然能夠運行,因此 RTC 也經常用于各種低功耗場景。通過本章的學習,將學習到 RTC …

Java 輕松實現 Markdown 轉 Word、PDF、HTML

在軟件開發和技術寫作領域,Markdown 已成為一種被廣泛使用的輕量級標記語言。它的語法簡潔,書寫效率高,非常適合快速記錄筆記、撰寫技術文檔或博客文章。但在實際應用中,Markdown 文件往往需要被轉換為更通用的格式,例…

Kafka系列之:Kafka broker does not support the ‘MetadataRequest_v0‘ Kafka protocol.

Kafka系列之:Kafka broker does not support the MetadataRequest_v0 Kafka protocol. 一、完整報錯 二、錯誤原因 三、解決方法 一、完整報錯 kafka.errors.IncompatibleBrokerVersion: IncompatibleBrokerVersion: Kafka broker does not support the ‘MetadataRequest_v0’…

開源AI紅隊工具“Red AI Range“助力發現、分析與緩解AI系統漏洞

開源AI紅隊平臺Red AI Range(RAR)正在改變安全專業人員評估和強化AI系統的方式。該平臺通過模擬真實攻擊場景,利用容器化架構和自動化工具,簡化了AI特有漏洞的發現、分析和緩解流程。**核心功能** 1. 武器庫/目標按鈕可快速啟動…

SQL 數據庫簡介

SQL(Structured Query Language)是一種用于管理和操作關系型數據庫的標準語言。關系型數據庫以表格形式存儲數據,并通過行和列的結構化方式組織信息。SQL 提供了一套強大的命令,用于查詢、插入、更新和刪除數據,以及管…

SpringBoot4與Spring7發布:云原生深度進化

Spring Boot 4和Spring Framework 7帶來基礎要求升級、模塊化改進、API版本化、聲明式HTTP客戶端、彈性注解等重大特性,標志著Java開發生態向云原生時代的深度進化。 近日,Spring生態迎來了自2022年以來最具里程碑意義的更新——Spring Boot 4和Spring …

基于Spring Boot與Micrometer的系統參數監控指南

如何為你的Spring Boot應用裝上一個功能強大的監控儀表盤在現代微服務架構中,系統監控已成為保障應用穩定性的關鍵環節。通過有效的監控,我們可以實時了解應用的運行狀態,及時發現并解決性能問題。本文將介紹如何使用Micrometer及其注冊表&am…

【運維】-- 前端會話回放與產品分析平臺之 openreplay

目錄 OpenReplay 項目分析 1、項目概覽 2、關鍵特性 3、代碼結構(Monorepo) 4、技術棧與語言占比 5、部署與交付 6、社區與支持 7、版本與活躍度(截至倉庫頁面所示) 8、適用場景 9、優勢與注意事項 10、落地建議&#…

NineData社區版 V4.5.0 正式發布!運維中心新增細粒度任務權限管理,新增MySQL至Greenplum全鏈路復制對比

NineData 社區版 V4.5.0 正式發布!在數據復制方面,新增 MySQL 至 Greenplum 全鏈路復制對比,并優化全局 DDL 管控、MySQL/PostgreSQL/MongoDB 同構性能。在數據庫 DevOps 方面,新增支持 AWS RDS 全系列及阿里云 PolarDB&#xff0…

discuz所有下載版本和升級工具

下載版本: Discuz! 每日構建版下載 - DiscuzX 3.x Daily Build Download Site SC是簡體中文 TC是繁體中文 可能你需要其他版本: Discuz!官方網站 - 開放、連接、共贏 下載簡體中文就好。 升級工具: 升級程序下載地址 https://gitee.com/oldhuhu/DiscuzX34235.git(…

【開題答辯全過程】以 “紅色棗莊”旅游網站為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人,語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

【LeetCode】2785. 將字符串中的元音字母排序

題目描述 題目鏈接 問題分析 這道體的思路非常簡單和好理解,找出字符串中的元音字符,然后按照ASSIC值進行排序,然后插入回對應的位置,解題步驟為: 使用一個set(可以快速查找的容器)&#x…

3 步發 10 億郵件,這個 GitHub 開源項目牛逼。

你是否要經常批量發郵件?無論是向客戶推送最新資訊、產品營銷,還是發送日常常規通知類郵件。使用第三方郵件服務平臺不僅成本高昂,功能限制多,而且可能無法保證隱私和安全。現在,有一個完全開源、能自己部署的解決方案…

【計算機網絡】DNS 解析 DNS 污染

1. DNS 解析(工作流程、參與方與緩存) DNS 的目標:把人類可讀的域名(如 www.example.com)映射為 IP 地址(如 93.184.216.34)。 典型解析流程(遞歸解析器 迭代查詢)&…

用住宿樓模型徹底理解Kubernetes架構(運行原理視角)

導讀:從樓宇建設到租客入住的全流程想象我們正在建設一棟巨型智能住宿樓,從基礎設施搭建到租客入住管理,每個環節都對應Kubernetes的組件和概念。本文將按運行原理的先后順序,系統解析Kubernetes的23個核心組件與基本概念。把 Kub…

嘉銀科技基于阿里云 Kafka Serverless 提升業務彈性能力,節省成本超過 20%

作者:四牛 前言 云消息隊列 Kafka 版 Serverless 系列憑借其秒級彈性擴展、按需付費、輕運維的優勢,助力嘉銀科技業務系統實現靈活擴縮容,在業務效率和成本優化上持續取得突破,保證服務的敏捷性和穩定性,并節省超過 20…

RTOS 任務狀態與調度機制詳解

一、任務狀態概述在實時操作系統(RTOS)中,任務通常具有以下幾種基本狀態:Running(運行態):任務正在 CPU 上實際執行。單核系統中同一時刻最多只有一個任務處于運行態。Ready(就緒態&…

TDengine 特殊選擇函數 UNIQUE 用戶手冊

UNIQUE 函數用戶手冊 函數定義 UNIQUE(expr)功能說明 UNIQUE() 函數返回指定列去重后的值,功能類似于 SQL 中的 DISTINCT 關鍵字。對于相同的數據值,UNIQUE 函數會返回時間戳最小的那一條記錄。該函數會跳過 NULL 值。 版本要求 最低版本: v3.0.0.0…

新零售第一階段傳統零售商的困境突破與二次增長路徑:基于定制開發開源AI智能名片S2B2C商城小程序的實踐探索

摘要:新零售第一階段,傳統零售商面臨同質化競爭、用戶消費意愿低迷、線上電商分流等核心困境。本文以定制開發開源AI智能名片S2B2C商城小程序為切入點,結合阿里巴巴、某知名連鎖零售企業等實踐案例,分析其通過“AI智能推薦供應鏈協…