利用 Python 爬蟲進行跨境電商數據采集

  • 1 引言
  • 2 代理IP的優勢
  • 3 獲取代理IP賬號
  • 4 爬取實戰案例---(某電商網站爬取)
    • 4.1 網站分析
    • 4.2 編寫代碼
    • 4.3 優化代碼
  • 5 總結

1 引言

??在數字化時代,數據作為核心資源蘊含重要價值,網絡爬蟲成為企業洞察市場趨勢、學術研究探索未知領域的重要技術手段。然而爬蟲實踐中常面臨技術挑戰,例如某電商企業通過爬蟲獲取競品數據時,因高頻請求觸發目標平臺 IP 封鎖機制導致采集中斷。IP 代理在網絡爬蟲中發揮關鍵作用:通過分布式請求分散訪問壓力,可規避單 IP 高頻訪問限制并突破地域內容獲取限制;同時能隱藏真實 IP 地址降低法律風險,模擬多用戶行為特征優化反爬蟲策略,有效平衡數據獲取需求與網絡訪問規則。這種技術工具通過突破技術限制、提升采集效率、保障數據安全等多維價值,成為網絡爬蟲體系中的重要組成部分。本文將介紹代理IP在網絡爬蟲中的重要性,并結合實際應用。

2 代理IP的優勢

  1. 強大的架構性能:采用高性能分布式集群架構,具備無限并發能力,不限制并發請求,能完美滿足多終端使用需求,為各類業務穩定運行提供堅實保障。

  2. 豐富的功能配置:支持多種代理認證模式,同時兼容 HTTP、HTTPS 以及 socks5 協議。還提供 API 接口調用與可視化監控統計功能,為用戶業務開展提供極大便利。

  3. 優質的資源保障:擁有千萬級優質住宅代理 IP 池,實時更新來自 200 多個國家的真實家庭住宅 IP。這些 IP 具有高效率、低延遲的特點,且能提供超高私密性,有力保障數據安全。

  4. 個性化的定制服務:兼顧個人和企業用戶的專屬需求,支持根據業務場景定制獨享 IP。 這個團隊提供 24 小時服務與技術支持,全方位滿足用戶多樣化業務需求。

3 獲取代理IP賬號

??這里我們可以選擇進入官網網站,獲取賬號

image-20250226083712407

??在測試前,我們記得實名認證一下,這樣我們就可以享受500M測試的額度了,接下來我們簡單演示一下使用賬密認證的形式獲取代理~


??在獲取代理前,我們首先要創建一下子賬號,這里的用戶名和密碼都要采用字母+數字

image-20250226085533431

??接下來我們就可以獲取代理信息了,前往獲取代理,然后選擇賬密認證。這里選擇所需的地區、子用戶、粘性會話、代理協議以及我們需要的其他參數,我這里默認

image-20250226085616542

?生成代理信息,完成前面的設置后,我們將獲得代理信息。請復制提供的詳細信息并在您的代理軟件中配置使用。

image-20250226085749886

?套餐選擇一般有兩個選項動態住宅代理靜態住宅代理,當然我相信很多人是不了解這兩個的,這里我簡單的介紹一下

  • 動態住宅代理的 IP 地址處于不斷變化之中,這使得它在模擬多樣化用戶行為、規避網站訪問限制等方面表現出色,像網絡爬蟲、廣告驗證等場景常能看到它的身影。其成本往往根據使用量或時長而定,相對較為靈活,價格一般不算高,還能為用戶提供較好的匿名性保護,不過在速度和穩定性上可能會有一些波動。

  • 靜態住宅代理有著固定不變的 IP 地址,在速度和穩定性方面更具優勢,適用于對網絡質量要求高的網站測試、電商監控等場景。由于其資源的特殊性,價格通常偏高,而且因為 IP 固定,相對容易被追蹤,匿名性稍弱。

?此外官方還設置了許多使用教程,感興趣的小伙伴可自行查閱!

?接下來讓我們進入爬取實戰環節。

4 爬取實戰案例—(某電商網站爬取)

4.1 網站分析

?這是一個海外電商平臺,今天我想要獲取下面圖中一些信息,這里選取的關鍵詞是:IPhone 16

image-20250226103213908

?接下來我們想要獲取商品的:title、price、link,如何獲取呢,我們可以選擇點擊鍵盤上的F12,之后我們就可以按照下面的示例,進行選中對應的塊了

image-20250226103523205

?這里我們選擇通過soup.find_all(‘div’, class_=‘product-tuple-listing’)來查找所有的商品塊

image-20250226103816035

?每個商品塊包含了:

  • 商品名稱:位于 <p class="product-title"> 標簽中。
  • 商品價格:位于 <span class="lfloat product-price"> 標簽中。
  • 商品鏈接:位于 <a> 標簽中,包含 href 屬性。

?上面是簡單的網站結構分析,下面我們進行實戰


4.2 編寫代碼

  1. 首先我們需要導入庫,這里我們導入requests和bs4,這兩種庫
    • requests 是 Python 中一個簡潔且功能強大的 HTTP 庫,用于發送各種 HTTP 請求,使得在 Python 中進行網絡請求變得非常容易。
    • bs4BeautifulSoup 4,是一個用于解析 HTML 和 XML 文檔的 Python 庫,能夠從網頁中提取所需的數據。
import requests
from bs4 import BeautifulSoup
  1. 其次設置請求頭,如下
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}
  1. 模擬瀏覽器請求。很多網站會根據請求頭來判斷請求是否來自瀏覽器,以防止自動化腳本等的訪問。這里你也可以選擇多設置幾個

image-20250226104531453

  1. 之后我們確定目標 URL,這里是可以變動的,但是如果變動過大的話,后面對應的結構也得變動

  2. 獲取頁面的內容,requests.get(url, headers=headers):發送 GET 請求到 Snapdeal 網站,獲取網頁內容。

    response.text:獲取返回的 HTML 內容。BeautifulSoup(response.text, ‘html.parser’):使用 BeautifulSoup 解析 HTML 內容。'html.parser' 是解析器,BeautifulSoup 會將 HTML 內容轉換成一個可以通過 Python 代碼進行操作的對象。

    response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser')

  3. 定義提取商品信息的函數,這里使用find_all函數

    def extract_product_info():products = []product_elements = soup.find_all('div', class_='product-tuple-listing')
    

    這里設置products = []:初始化一個空列表,用來存儲商品信息。

    soup.find_all('div', class_='product-tuple-listing'):通過 BeautifulSoup 找到所有符合條件的 div 元素,這些 div 元素是每個商品的容器。根據頁面的結構,每個商品信息都被包含在一個 div 標簽中,其類名為 product-tuple-listing

  4. 接下來就是for循環遍歷了

for product in product_elements:title = product.find('p', class_='product-title').text.strip() if product.find('p', class_='product-title') else Noneprice = product.find('span', class_='lfloat product-price').text.strip() if product.find('span', class_='lfloat product-price') else Nonelink = product.find('a', href=True)['href'] if product.find('a', href=True) else None

?上面就是整個代碼的核心步驟,下面我給出完整的代碼

import requests
from bs4 import BeautifulSoup# 設置請求頭模仿瀏覽器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}# 指定 URL,這里用的是你提供的 iPhone 16 搜索頁面鏈接
url = 'https://www.snapdeal.com/search?keyword=iPhone%2016&santizedKeyword=Sony&catId=0&categoryId=0&suggested=false&vertical=p&noOfResults=20&searchState=&clickSrc=go_header&lastKeyword=&prodCatId=&changeBackToAll=false&foundInAll=false&categoryIdSearched=&cityPageUrl=&categoryUrl=&url=&utmContent=&dealDetail=&sort=rlvncy'# 獲取頁面內容
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')# 提取商品的名稱、價格、URL等
def extract_product_info():products = []# 找到包含產品的所有元素product_elements = soup.find_all('div', class_='product-tuple-listing')for product in product_elements:title = product.find('p', class_='product-title').text.strip() if product.find('p',class_='product-title') else Noneprice = product.find('span', class_='lfloat product-price').text.strip() if product.find('span',class_='lfloat product-price') else Nonelink = product.find('a', href=True)['href'] if product.find('a', href=True) else None# 僅當所有必要的字段都有時才記錄if title and price and link:product_info = {'title': title,'price': price,'link': f'https://www.snapdeal.com{link}',}products.append(product_info)return products# 獲取并打印產品信息
products = extract_product_info()
for product in products:print(f"Title: {product['title']}")print(f"Price: {product['price']}")print(f"Link: {product['link']}")print("-" * 40)

?下面是運行的結果:

image-20250226114536449

4.3 優化代碼

?接下來我們使用代理再試試,下面是官方為我們提供的關于Demo示例,從代碼來看,還是十分簡潔明了的

import requests
if __name__ == '__main__':
proxyip = "http://username_custom_zone_US:password@us.ipwo.net:7878"
url = "http://ipinfo.io"
proxies = {
'http': proxyip,
}
data = requests.get(url=url, proxies=proxies)
print(data.text)

?接下來我們再根據提供的代碼示例,從而優化我們的代碼,下面是完整的代碼闡述

import requests
from bs4 import BeautifulSoup# 設置請求頭模仿瀏覽器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}# 設置代理
proxyip = " "  # 替換為你自己的ip信息
proxies = {'http': proxyip,
}# 指定 URL,這里用的是你提供的 iPhone 16 搜索頁面鏈接
url = 'https://www.snapdeal.com/search?keyword=iPhone%2016&santizedKeyword=Sony&catId=0&categoryId=0&suggested=false&vertical=p&noOfResults=20&searchState=&clickSrc=go_header&lastKeyword=&prodCatId=&changeBackToAll=false&foundInAll=false&categoryIdSearched=&cityPageUrl=&categoryUrl=&url=&utmContent=&dealDetail=&sort=rlvncy'# 獲取頁面內容,使用代理,禁用 SSL 驗證
response = requests.get(url, headers=headers, proxies=proxies, verify=False)  # verify=False 關閉 SSL 驗證
soup = BeautifulSoup(response.text, 'html.parser')# 提取商品的名稱、價格、URL等
def extract_product_info():products = []# 找到包含產品的所有元素product_elements = soup.find_all('div', class_='product-tuple-listing')for product in product_elements:title = product.find('p', class_='product-title').text.strip() if product.find('p', class_='product-title') else Noneprice = product.find('span', class_='lfloat product-price').text.strip() if product.find('span', class_='lfloat product-price') else Nonelink = product.find('a', href=True)['href'] if product.find('a', href=True) else None# 僅當所有必要的字段都有時才記錄if title and price and link:product_info = {'title': title,'price': price,'link': f'https://www.snapdeal.com{link}',}products.append(product_info)return products# 獲取并打印產品信息
products = extract_product_info()
for product in products:print(f"Title: {product['title']}")print(f"Price: {product['price']}")print(f"Link: {product['link']}")print("-" * 40)

?下面是運行結果:

image-20250226114504892

5 總結

??通過本文的介紹,我們可以清楚的了解并認識到代理在網絡數據采集是十分重要的,針對snapdeal電商平臺的商品數據采集,發現了IPWO的強大之處,使我們進行網絡數據采集的時候,效率大大的提高~

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

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

相關文章

HONOR榮耀MagicBook 15 2021款 獨顯(BOD-WXX9,BDR-WFH9HN)原廠Win10系統

適用型號&#xff1a;【BOD-WXX9】 MagicBook 15 2021款 i7 獨顯 MX450 16GB512GB (BDR-WFE9HN) MagicBook 15 2021款 i5 獨顯 MX450 16GB512GB (BDR-WFH9HN) MagicBook 15 2021款 i5 集顯 16GB512GB (BDR-WFH9HN) 鏈接&#xff1a;https://pan.baidu.com/s/1S6L57ADS18fnJZ1…

c語言實現三子棋小游戲(涉及二維數組、函數、循環、常量、動態取地址等知識點)

使用C語言實現一個三子棋小游戲 涉及知識點&#xff1a;二維數組、自定義函數、自帶函數庫、循環、常量、動態取地址等等 一些細節點&#xff1a; 1、引入自定義頭文件&#xff0c;需要用""雙引號包裹文件名&#xff0c;目的是為了和官方頭文件的<>區分開。…

C語言數據類型及其使用 (帶示例)

目錄 1. 基本數據類型 整型 浮點型 字符型 2. 構造數據類型 數組 結構體 聯合體&#xff08;共用體&#xff09; 枚舉類型 3. 指針類型 4. 空類型 在 C 語言中&#xff0c;數據類型是非常重要的概念&#xff0c;它決定了數據在內存中的存儲方式、占用空間大小以及可…

Web自動化之Selenium添加網站Cookies實現免登錄

在使用Selenium進行Web自動化時&#xff0c;添加網站Cookies是實現免登錄的一種高效方法。通過模擬瀏覽器行為&#xff0c;我們可以將已登錄狀態的Cookies存儲起來&#xff0c;并在下次自動化測試或爬蟲任務中直接加載這些Cookies&#xff0c;從而跳過登錄步驟。 Cookies簡介 …

NAT 技術:網絡中的 “地址魔術師”

目錄 一、性能瓶頸&#xff1a;NAT 的 “阿喀琉斯之踵” &#xff08;一&#xff09;數據包處理延遲 &#xff08;二&#xff09;高并發下的性能損耗 二、應用兼容性&#xff1a;NAT 帶來的 “適配難題” &#xff08;一&#xff09;端到端通信的困境 &#xff08;二&…

php序列化與反序列化

文章目錄 基礎知識魔術方法&#xff1a;在序列化和反序列化過程中自動調用的方法什么是 __destruct() 方法&#xff1f;何時觸發 __destruct() 方法&#xff1f;用途&#xff1a;語法示例&#xff1a; 反序列化漏洞利用前提條件一些繞過策略繞過__wakeup函數繞過正則匹配繞過相…

docker 占用系統空間太大了,整體遷移到掛載的其他磁盤|【當前普通用戶使用docker時,無法指定鏡像、容器安裝位置【無法指定】】

文章目錄 前言【核心步驟皆為 大模型生成的方案】總結步驟應該是&#xff1a;詳細步驟如下1. **停止 Docker 服務**2. **備份原數據&#xff08;防止遷移失敗&#xff09;**3. **遷移數據到新磁盤**4. **修改 Docker 配置文件**5. **重啟 Docker 服務**6. **驗證容器和鏡像**7.…

設計后端返回給前端的返回體

目錄 1、為什么要設計返回體&#xff1f; 2、返回體包含哪些內容&#xff08;如何設計&#xff09;&#xff1f; 舉例 3、總結 1、為什么要設計返回體&#xff1f; 在設計后端返回給前端的返回體時&#xff0c;通常需要遵循一定的規范&#xff0c;以確保前后端交互的清晰性…

Springboot 自動化裝配的原理

Springboot 自動化裝配的原理 SpringBoot 主要作用為&#xff1a;起步依賴、自動裝配。而為了實現這種功能&#xff0c;SpringBoot 底層主要使用了 SpringBootApplication 注解。 首先&#xff0c;SpringBootApplication 是一個復合注解&#xff0c;它結合了 Configuration、…

基于vue框架的游戲博客網站設計iw282(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表 項目功能&#xff1a;用戶,博客信息,資源共享,游戲視頻,游戲照片 開題報告內容 基于FlaskVue框架的游戲博客網站設計開題報告 一、項目背景與意義 隨著互聯網技術的飛速發展和游戲產業的不斷壯大&#xff0c;游戲玩家對游戲資訊、攻略、評測等內容的需求日…

算法-二叉樹篇13-路徑總和

路徑總和 力扣題目鏈接 題目描述 給你二叉樹的根節點 root 和一個表示目標和的整數 targetSum 。判斷該樹中是否存在 根節點到葉子節點 的路徑&#xff0c;這條路徑上所有節點值相加等于目標和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否則&#xff0c;返回…

8. 示例:對32位數據總線實現位寬和值域覆蓋

文章目錄 前言示例一&#xff1a;示例二&#xff1a;示例三&#xff1a;仿真與覆蓋率分析覆蓋點詳細說明覆蓋率提升技巧常見錯誤排查 示例四&#xff1a;仿真步驟 前言 針對32位數據總線實現位寬和值域的覆蓋&#xff0c;并且能夠用xrun運行&#xff0c;查看日志和波形。cover…

TDengine 中的數據庫

數據庫概念 時序數據庫 TDengine 中數據庫概念&#xff0c;等同于關系型數據庫 MYSQL PostgreSQL 中的數據庫&#xff0c;都是對資源進行分割管理的單位。 TDengine 數據庫與關系型數據庫最大區別是跨庫操作&#xff0c;TDengine 數據庫跨庫操作除了少量幾個SQL 能支持外&…

開源電商項目、物聯網項目、銷售系統項目和社區團購項目

以下是推薦的開源電商項目、物聯網項目、銷售系統項目和社區團購項目&#xff0c;均使用Java開發&#xff0c;且無需付費&#xff0c;GitHub地址如下&#xff1a; ### 開源電商項目 1. **mall** GitHub地址&#xff1a;[https://github.com/macrozheng/mall](https://git…

如何設計一個短鏈系統?

短鏈系統設計的關鍵要點: 系統功能實現 短鏈生成:接收長鏈接,先檢查是否已有對應短鏈,存在則直接返回。否則,使用分布式 ID 生成器(如號段模式、SnowFlake 算法、數據庫自增 ID、Redis 自增等)生成唯一 ID,或通過哈希算法(如 MurmurHash)處理長鏈接得到哈希值。再將生…

數據結構(初階)(三)----單鏈表

單鏈表 概念 概念&#xff1a;鏈表是?種物理存儲結構上?連續、?順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。 結點 與順序表不同的是&#xff0c;鏈表的結構類似于帶車頭的火車車廂&#xff0c;&#xff0c;鏈表的每個車廂都是獨立…

游戲引擎學習第129天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 小妙招: vscode:定位錯誤行 一頓狂按F8 重構快捷鍵:F2 重構相關的變量 回顧并為今天的內容做準備 今天的工作主要集中在渲染器的改進上&#xff0c;渲染器現在運行得相當不錯&#xff0c;得益于一些優化和組織上的改進。我們計…

文字描邊實現內黃外綠效果

網頁使用 <!DOCTYPE html> <html> <head> <style> .text-effect {color: #ffd700; /* 黃色文字 */-webkit-text-stroke: 2px #008000; /* 綠色描邊&#xff08;兼容Webkit內核&#xff09; */text-stroke: 2px #008000; /* 標準語法 *…

yolov8 目標追蹤 (源碼 +效果圖)

1.在代碼中 增加了s鍵開始追蹤 e鍵結束追蹤 顯示移動距離(代碼中可調標尺和像素的比值 以便接近實際距離) 2.繪制了監測區域 只在區域內的檢測 3.規定了檢測的類別 只有人類才繪制軌跡 import osimport cv2 from ultralytics import YOLO from collections import defaultdic…

2.5 運算符2

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商業目的 2.5.3 賦值運算符 賦值運算符將值存儲在左操作數指定的對象中。有兩種賦值操作&#xff1a; 1、簡單賦值&#xff0c;使用。其中第二…