導航:首頁 > 編程語言 > python爬蟲淘寶店鋪跟蹤

python爬蟲淘寶店鋪跟蹤

發布時間:2025-03-21 05:18:40

Ⅰ 【python3網路爬蟲開發實戰】使用Selenium爬取淘寶商品

本文介紹使用Selenium爬取淘寶商品信息,並保存至MongoDB。首先,需確保已安裝Chrome瀏覽器、ChromeDriver、Python的Selenium庫以及PhantomJS、Firefox和其對應Driver。接著,分析淘寶介面和頁面結構,發現通過構造URL參數,可直接抓取商品信息,無需關注復雜介面參數。頁面分析顯示,商品信息位於商品列表中,通過跳轉鏈接可訪問任意頁的商品。使用Selenium獲取頁面源碼後,利用pyquery解析,提取圖片、名稱、價格、購買人數、店鋪名稱和店鋪所在地等信息,最終保存至MongoDB。

構造商品搜索URL,通過關鍵詞自定義,構造URL並使用Selenium抓取頁面。實現分頁邏輯,通過跳轉頁碼輸入框實現自動跳轉至所需頁。等待頁面載入,確保元素完全呈現後進行商品信息提取。解析頁面源碼,使用pyquery找到商品信息塊,遍歷提取圖片鏈接、價格、成交量等信息,構建商品字典,調用方法保存至MongoDB。

遍歷每頁商品,調用獲取方法並遍歷頁碼1至100,完成所有商品信息抓取。運行代碼,瀏覽器自動打開,輸出提取結果至控制台,檢查MongoDB中數據,確保成功存儲所有商品信息。支持Chrome Headless模式,從版本59開始啟用無界面模式,提升爬取效率。對接Firefox瀏覽器,只需更改瀏覽器對象創建方式。使用PhantomJS進行爬取,無需界面,優化爬取流程,可通過命令行配置,如設置緩存、禁用圖片載入,提高效率。

實現流程清晰,自動化程度高,適用於大規模商品信息抓取需求。通過Selenium與MongoDB結合,為電商數據分析與市場調研提供數據支持。關注公眾號獲取更多技術教程與實踐案例。

Ⅱ Python爬取淘寶商品信息並生成Excel

1前言

後台有很多小夥伴私信問我關於python爬蟲的知識和學習資源,今天這篇文章就簡單介紹下python爬蟲的知識點,並以爬取淘寶網的商品信息存到excel表格中進行演示,同樣的本文的源碼會同步至github,歡迎下載使用。

2爬蟲相關知識

在進行爬蟲之前,需要先了解一些關於爬蟲的基本知識。

首先我們需要先了解下爬蟲的基本原理:

基本的網頁請求的過程都可以分為以下兩個步驟:

1、Request(請求):每一個展示在用戶面前的網頁都必須經過這一步,也就是向伺服器發送訪問請求。

2、Response(響應):伺服器在接收到用戶的請求後,會驗證請求的有效性,然後向用戶(客戶端)發送響應的內容,客戶端接收伺服器響應的內容,將內容展示出來(即網頁),如下圖所示。

網頁請求的方式也分為兩種:

1、GET:最常見的方式,一般用於獲取或者查詢資源信息,也是大多數網站使用的方式,響應速度快。

2、POST:相比GET方式,多了以表單形式上傳參數的功能,因此除查詢信息外,還可以修改信息。

所以,在寫爬蟲前我們要先確定向誰發送請求,並且用什麼方式發送。

向誰發送請求,那我們就需要了解請求的url地址,以淘寶網的眼鏡的url為例:

https://s.taobao.com/search?q=%E7%9C%BC%E9%95%9C&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306

這里眼鏡中文被轉義了:

這里我們只需要知道q後面的值就是我們搜索的商品的名字就可以了,後面其他的參數這里暫時對我們沒用。

因為爬蟲並不只爬取一頁的信息,我們跳轉到下一頁:

可以發現s的值=44*(頁碼-1)。

接著ctrl+U組合鍵打開源碼,可以發現有一個g_page_config的json串,裡面的data值如下:

,"data":{"postFeeText":"運費","trace":"msrp_auction","auctions":[{"p4p":1,"p4pSameHeight":true,"nid":"536766094512","category":"","pid":"","title":"近視u003cspanclassu003dHu003e眼鏡u003c/spanu003e男有度數超輕全框u003cspanclassu003dHu003e眼鏡u003c/spanu003e框半框舒適可配u003cspanclassu003dHu003e眼鏡u003c/spanu003e防霧眼睛近視鏡","raw_title":"丹陽眼鏡眼鏡框眼鏡架眼睛框防輻射光學鏡","pic_url":"//g-search1.alicdn.com/img/bao/uploaded/i4/imgextra/i2/104870285060645671/TB2ulgla4vzQeBjSZPfXXbWGFXa_!!0-saturn_solar.jpg"

這里postFeeText即為運費,raw_title為標題,pic_url即為展示圖片的地址,

view_price:運費;

nick:商鋪的名稱;

item_loc:地址;

view_sales:銷售量。

以上的數據即對應下面的這些信息:

請求方式可以F12,然後再network--->headers--->requestMethod找到:

在了解上面的基本內容之後我們就可以寫一個小型的爬蟲了,比如下面的代碼:

#導入requests包importrequestsurl='https://s.taobao.com/search?q=%E7%9C%BC%E9%95%9C&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s=44'#Get方式獲取網頁數據strhtml=requests.get(url)print(strhtml.text)

這樣就將頁面的內容獲取並以html的格式展示出來了。

使用requests庫請求網站載入庫使用的語句是import+庫的名字。在上述過程中,載入requests庫的語句是:importrequests。

用GET方式獲取數據需要調用requests庫中的get方法,使用方法是在requests後輸入英文點號,如下所示:

requests.get

將獲取到的數據存到strhtml變數中,代碼如下:

strhtml=request.get(url)

這個時候strhtml是一個URL對象,它代表整個網頁,但此時只需要網頁中的源碼,下面的語句表示網頁源碼:

strhtml.text3實戰

接下來我們完整的爬取淘寶的信息,主要爬取的信息是:商品名稱、店鋪名稱、價格、地區、付款人數。

首先我們定義一個函數獲取請求的url:

#前面介紹q即為查詢的商品的名稱,所以這里定義為變數,方便後面重復使用defGeturls(q,x):url="https://s.taobao.com/search?q="+q+"&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm""=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306"urls=[]urls.append(url)ifx==1:returnurlsforiinrange(1,x):url="https://s.taobao.com/search?q="+q+"&commend=all&ssid=s5-e&search_type=item""&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306""&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s="+str(i*44)urls.append(url)returnurls

然後定義一個函數來獲取html的頁面:

defGetHtml(url):#這里的請求get請求r=requests.get(url,headers=headers)r.raise_for_status()r.encoding=r.apparent_encodingreturnr

然後定義一個函數獲取商品的信息並插入excel:

首先介紹一個re庫:

re庫是python的標准庫

re庫採用rawstring類型表示正則表達式,表示為:r'test'

原生字元串(rawstring)是不包含轉義符的字元串。

Re庫主要功能函數如下:

這里我們使用findall()函數提取信息,比如:

a=re.findall(r'"raw_title":"(.*?)"',html)defGetandintoExcel(html):globalcount#商品名稱a=re.findall(r'"raw_title":"(.*?)"',html)#店鋪名稱b=re.findall(r'"nick":"(.*?)"',html)#商品價格c=re.findall(r'"view_price":"(.*?)"',html)#地區d=re.findall(r'"item_loc":"(.*?)"',html)#銷售量e=re.findall(r'"view_sales":"(.*?)"',html)x=[]foriinrange(len(a)):try:x.append((a[i],b[i],c[i],d[i],e[i]))exceptIndexError:breaki=0foriinrange(len(x)):worksheet.write(count+i+1,0,x[i][0])worksheet.write(count+i+1,1,x[i][1])worksheet.write(count+i+1,2,x[i][2])worksheet.write(count+i+1,3,x[i][3])worksheet.write(count+i+1,4,x[i][4])count=count+len(x)returnprint("數據爬取完成")

主函數如下:

,"data":{"postFeeText":"運費","trace":"msrp_auction","auctions":[{"p4p":1,"p4pSameHeight":true,"nid":"536766094512","category":"","pid":"","title":"近視u003cspanclassu003dHu003e眼鏡u003c/spanu003e男有度數超輕全框u003cspanclassu003dHu003e眼鏡u003c/spanu003e框半框舒適可配u003cspanclassu003dHu003e眼鏡u003c/spanu003e防霧眼睛近視鏡","raw_title":"丹陽眼鏡眼鏡框眼鏡架眼睛框防輻射光學鏡","pic_url":"//g-search1.alicdn.com/img/bao/uploaded/i4/imgextra/i2/104870285060645671/TB2ulgla4vzQeBjSZPfXXbWGFXa_!!0-saturn_solar.jpg"0

最後運行程序:

以上就是如何使用python爬取淘寶信息的內容,全部代碼如下:

(q,x):url="https://s.taobao.com/search?q="+q+"&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm""=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306"urls=[]urls.append(url)ifx==1:returnurlsforiinrange(1,x):url="https://s.taobao.com/search?q="+q+"&commend=all&ssid=s5-e&search_type=item""&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306""&bcoffset=3&ntoffset=3&p4ppushleft=1%2C48&s="+str(i*44)urls.append(url)returnurlsdefGetHtml(url):r=requests.get(url,headers=headers)r.raise_for_status()r.encoding=r.apparent_(html):globalcounta=re.findall(r'"raw_title":"(.*?)"',html)b=re.findall(r'"nick":"(.*?)"',html)c=re.findall(r'"view_price":"(.*?)"',html)d=re.findall(r'"item_loc":"(.*?)"',html)e=re.findall(r'"view_sales":"(.*?)"',html)x=[]foriinrange(len(a)):try:x.append((a[i],b[i],c[i],d[i],e[i]))exceptIndexError:breaki=0foriinrange(len(x)):worksheet.write(count+i+1,0,x[i][0])worksheet.write(count+i+1,1,x[i][1])worksheet.write(count+i+1,2,x[i][2])worksheet.write(count+i+1,3,x[i][3])worksheet.write(count+i+1,4,x[i][4])count=count+len(x)returnprint("數據爬取完成")if__name__=="__main__":count=0headers={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.149Safari/537.36","cookie":"t=;sgcookie=E100VfIm5WNNIHQbxK40GoWlA%2BiEh8%%3D%3D;tracknick=%5Cu5C0F%5Cu5C0F%5Cu5C0F%5Cu5C0F%5Cu54466;_cc_=UtASsssmfA%3D%3D;thw=cn;enc=l%%2F4%2FN%2FROmEcqBpM4Uk%2FlCcbvHxEX4HhA%3D%3D;cna=E7gdGOrz1lwCAXOs+dCyLVoL;_m_h5_tk=_1606566002810;_m_h5_tk_enc=;cookie2=;v=0;_tb_token_=0a7840e5536b;JSESSIONID=;alitrackid=www.taobao.com;lastalitrackid=www.taobao.com;hng=CN%7Czh-CN%7CCNY%7C156;xlly_s=1;_samesite_flag_=true;tfstk=-7AiGgoy0ZkfSPvIBC..;l=eBjdYUdPOiL-v4n5U62j-la_kmn;isg=BE5OFMfVnXt4DynJaP_rUvlZnyQQzxLJN80UA3iXutEM2-414F9i2fSZEwe3Qwrh"}q=input("你想爬取的商品是:")x=int(input("你想爬取幾頁數據:"))urls=Geturls(q,x)workbook=xlsxwriter.Workbook(q+".xlsx")worksheet=workbook.add_worksheet()worksheet.set_column('A:A',70)worksheet.set_column('B:B',40)worksheet.set_column('C:C',20)worksheet.set_column('D:D',20)worksheet.set_column('E:E',20)worksheet.write('A1','商品名稱')worksheet.write('B1','店鋪名稱')worksheet.write('C1','價格')worksheet.write('D1','地區')worksheet.write('E1','付款人數')xx=[]forurlinurls:html=GetHtml(url)s=GetandintoExcel(html.text)time.sleep(5)workbook.close()4再說一句:反爬蟲

最後說一下爬蟲的合法性。幾乎每一個網站都有一個名為robots.txt的文檔,當然也有部分網站沒有設定robots.txt。對於沒有設定robots.txt的網站可以通過網路爬蟲獲取沒有口令加密的數據,也就是該網站所有頁面數據都可以爬取。如果網站有robots.txt文檔,就要判斷是否有禁止訪客獲取的數據。以網路為例,在瀏覽器中訪問https://www..com/robots.txt。

可以看到網路可以允許部分爬蟲訪問它的部分路徑,而對於沒有得到允許的用戶,則全部禁止爬取的,代碼如下:

,"data":{"postFeeText":"運費","trace":"msrp_auction","auctions":[{"p4p":1,"p4pSameHeight":true,"nid":"536766094512","category":"","pid":"","title":"近視u003cspanclassu003dHu003e眼鏡u003c/spanu003e男有度數超輕全框u003cspanclassu003dHu003e眼鏡u003c/spanu003e框半框舒適可配u003cspanclassu003dHu003e眼鏡u003c/spanu003e防霧眼睛近視鏡","raw_title":"丹陽眼鏡眼鏡框眼鏡架眼睛框防輻射光學鏡","pic_url":"//g-search1.alicdn.com/img/bao/uploaded/i4/imgextra/i2/104870285060645671/TB2ulgla4vzQeBjSZPfXXbWGFXa_!!0

Ⅲ 【Python爬蟲】網頁抓取實例之淘寶商品信息抓取

Python爬蟲抓取淘寶商品信息的實例,可以通過調用API介面來實現,具體步驟如下

  1. 獲取API調用許可權

    • 注冊API的key和密鑰:首先,需要在淘寶開放平台注冊並申請相應的API許可權,獲取API的key和密鑰。這是調用API的必要條件。
  2. 調用API介面

    • 進入API測試頁:使用獲取的key和密鑰,進入淘寶開放平台的API測試頁面。
    • 輸入商品ID並調用API:在測試頁面中,輸入想要抓取信息的商品ID,並調用相應的API介面。
  3. 解析API響應

    • 查找sku信息:在API的響應結果中,找到sku信息。sku信息包含了商品的不同規格及其對應的價格和其他詳細屬性。
    • 解析sku信息:通過解析sku信息,可以獲取到不同規格下的商品價格、顏色、套餐、存儲容量等詳細信息。

重點內容調用API介面:通過注冊獲取的key和密鑰,可以調用淘寶開放平台的API介面,獲取商品詳情信息。 解析sku信息:sku信息是商品不同規格下的詳細信息,通過解析這些信息,可以滿足多規格商品信息抓取的需求。

這種方法不僅適用於淘寶,也適用於其他類似電商平台的商品信息抓取,只要這些平台提供了相應的API介面。

閱讀全文

與python爬蟲淘寶店鋪跟蹤相關的資料

熱點內容
下達命令翻譯 瀏覽:869
怎麼編碼上傳視頻不被壓縮 瀏覽:953
榮耀3cre文件夾 瀏覽:680
拍攝照片可以加密嗎 瀏覽:843
android聯系人郵件 瀏覽:601
抖音上超級福袋app抽獎在哪裡 瀏覽:237
拍一段小視頻用什麼app 瀏覽:628
伺服器網卡有什麼好處 瀏覽:92
javasql格式化 瀏覽:613
小愛同學機器人的命令詞 瀏覽:973
檢驗signature的php示例代碼 瀏覽:173
android內錄 瀏覽:778
騰訊雲輕量應用伺服器服務商 瀏覽:178
平板app打不開怎麼回事 瀏覽:319
九號怎麼用app控制前後移動 瀏覽:619
pdf瀏覽器預覽 瀏覽:697
六一兒童節程序員爸爸 瀏覽:168
農村電視天線加密 瀏覽:905
freepdfword 瀏覽:754
程序員怎麼做舔狗 瀏覽:586