爬蟲入門之淘寶商品資訊定向爬取!雙十一到了學起來啊!
一、爬取原頁面
爬取頁面為淘寶網站,以女裝為例,原圖如下,由於淘寶商品排名實時更新,所以爬取結果順序與網站順序可能會存在不同。本例項爬取的內容為商品的價格和名稱,併為其新增序號。
二、程式設計思路
這一部分嵩天老師在課中給出了講解,這裡我整理分享給大家。
1.功能描述
目標:獲取淘寶搜尋頁面的資訊,提取其中的名稱和價格。
理解:
(1).獲得淘寶的搜尋介面
(2).對翻頁的處理
技術路線:requests-re
2.程式的結構設計
步驟一:提交商品搜尋請求,迴圈獲取頁面
步驟二:對於每個頁面,提取商品名稱和價格資訊
步驟三:將資訊輸出到螢幕上
對應上述三個步驟分別定義三個函式:
(1)getHTMLText()獲得頁面
(2)parsePage()對每一個獲得的頁面進行解析
(3)printGoodsList()將商品的資訊輸出到螢幕上
三、程式設計過程
1.解決翻頁問題
首先我們來看一下前三頁分別的URL
對淘寶每一頁商品數量的觀察我們可以發現,每一頁有44個商品,結合上面的結果我們可以猜測,變數s表示的是第二頁,第三頁…頁的起始商品的編號。基於這種規則,我們就可以構建不同頁的URL連結。
程式碼如下:
for i in range(depth):#對每次翻頁後的URL連結進行設計 url = start_url + '&s='+str(44*i) html = getHTMLText(url) parsePage(infoList,html)
2.編寫getHTMLText()函式
def getHTMLText(url):#獲得頁面 try: kv = {'user-agent': 'Mozilla/5.0', 'cookie':' '#請自行獲取 } r = requests.get(url,headers=kv,timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: print("獲取頁面失敗")
關於cookie的獲取方法,可以參考我的這篇部落格
連結: https://blog.csdn.net/weixin_44578172/article/details/109353017.
3.編寫parsePage()函式
(1).內容解析程式設計思路
首先檢視女裝搜尋結果頁面的原始碼
通過對原始碼的觀察我們發現,淘寶中所有商品的價格和名稱是存在相應的鍵值對中的即:“view_price”:“價格”,“view_title”:“名稱”。所以我們想要獲得這兩個資訊,只需要在獲得的文字中檢索到view_price和view_title並把後續的相關內容提取出來即可,這裡採用正規表示式的方法。
(2).函式程式碼
def parsePage(ilt,html):#對每一個獲得的頁面進行解析 #兩個變數分別是結果的列表型別和相關的HTML頁面的資訊 try: re1 = re.compile(r'\"view_price\"\:\"[\d\.]*\"')#編譯商品價格正規表示式 re2 = re.compile(r'\"raw_title\"\:\".*?\"')#編譯商品名稱正規表示式 plt = re1.findall(html) tlt = re2.findall(html) #plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) #tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) for i in range(len(plt)): price = eval(plt[i].split(':')[1])#去掉view_price欄位,只要價格部分,eval將獲取到的最外層/內層的單引號或雙引號去掉 title = eval(tlt[i].split(':')[1])#去掉raw_title欄位,只要名稱部分 ilt.append([price,title]) except: print("網頁解析失敗")
4.編寫printGoodsList()
def printGoodsList(ilt):#將商品的資訊輸出到螢幕上 try: tplt = "{:4}\t{:8}\t{:16}" #定義列印模板 print(tplt.format("序號","價格","商品名稱")) count = 0 for s in ilt: count = count + 1 print(tplt.format(count,s[0],s[1])) except: print("輸出失敗")
四、完整程式碼
''' 功能描述 目標:獲取淘寶搜尋頁面的資訊,提取其中的名稱和價格。 理解: 1.獲得淘寶的搜尋介面 2.對翻頁的處理 技術路線:requests-re 程式的結構設計 步驟1:提交商品搜尋請求,迴圈獲取頁面 步驟2:對於每個頁面,提取商品名稱和價格資訊 步驟3:將資訊輸出到螢幕上 ''' import requests import re def getHTMLText(url):#獲得頁面 try: kv = {'user-agent': 'Mozilla/5.0', 'cookie':' '#請自行獲取 } r = requests.get(url,headers=kv,timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: print("獲取頁面失敗") def parsePage(ilt,html):#對每一個獲得的頁面進行解析 #兩個變數分別是結果的列表型別和相關的HTML頁面的資訊 try: re1 = re.compile(r'\"view_price\"\:\"[\d\.]*\"')#編譯商品價格正規表示式 re2 = re.compile(r'\"raw_title\"\:\".*?\"')#編譯商品名稱正規表示式 plt = re1.findall(html) tlt = re2.findall(html) #plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) #tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) for i in range(len(plt)): price = eval(plt[i].split(':')[1])#去掉view_price欄位,只要價格部分,eval將獲取到的最外層/內層的單引號或雙引號去掉 title = eval(tlt[i].split(':')[1])#去掉raw_title欄位,只要名稱部分 ilt.append([price,title]) except: print("網頁解析失敗") def printGoodsList(ilt):#將商品的資訊輸出到螢幕上 try: tplt = "{:4}\t{:8}\t{:16}" #定義列印模板 print(tplt.format("序號","價格","商品名稱")) count = 0 for s in ilt: count = count + 1 print(tplt.format(count,s[0],s[1])) except: print("輸出失敗") def main(): goods = input("請輸入想要搜尋的商品:") #定義搜尋關鍵詞變數 depth = input("請輸入想要搜尋商品的深度(整數):") #定義爬取的深度即頁數 depth = int(depth) start_url = 'https://s.taobao.com/search?q='+goods infoList = [] #定義整個的輸出結果變數 for i in range(depth):#對每次翻頁後的URL連結進行設計 try: url = start_url + '&s='+str(44*i) html = getHTMLText(url) parsePage(infoList,html) except: continue printGoodsList(infoList) #呼叫主函式 main()
本篇完,如有錯誤歡迎指出~
PS:如遇到解決不了問題的小夥伴可以加點選下方連結自行獲取
相關文章
- Python爬蟲爬取淘寶,京東商品資訊Python爬蟲
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- 淘寶商品資訊爬取
- 爬蟲例項-淘寶頁面商品資訊獲取爬蟲
- 爬蟲之股票定向爬取爬蟲
- [Python3]selenium爬取淘寶商品資訊Python
- python網路爬蟲--爬取淘寶聯盟Python爬蟲
- Android 淘寶 爬蟲 學習Android爬蟲
- Java基於API介面爬取淘寶商品資料JavaAPI
- Python爬蟲,抓取淘寶商品評論內容!Python爬蟲
- 利用python編寫爬蟲爬取淘寶奶粉部分資料.1Python爬蟲
- python爬蟲——爬取大學排名資訊Python爬蟲
- 小白學 Python 爬蟲(25):爬取股票資訊Python爬蟲
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 淘寶API分享:獲取淘寶商品SKU資訊API
- Python爬蟲入門【3】:美空網資料爬取Python爬蟲
- 蘇寧易購網址爬蟲爬取商品資訊及圖片爬蟲
- [Python3網路爬蟲開發實戰] 7-動態渲染頁面爬取-4-使用Selenium爬取淘寶商品Python爬蟲
- Java爬蟲-爬取疫苗批次資訊Java爬蟲
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- Python網路爬蟲之爬取淘寶網頁頁面 MOOC可以執行的程式碼Python爬蟲網頁
- 分散式爬蟲之知乎使用者資訊爬取分散式爬蟲
- 一起學爬蟲——使用Beautiful Soup爬取網頁爬蟲網頁
- 爬蟲入門爬蟲
- 網路爬蟲 淘寶/天貓獲得淘寶商品評論 API 返回值說明爬蟲API
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- 兩人因使用爬蟲非法爬取、使用淘寶11.8億使用者資料獲罪爬蟲
- 爬蟲實戰(二):Selenium 模擬登入並爬取資訊爬蟲
- Python 爬蟲從入門到進階之路(十一)Python爬蟲
- Python爬蟲入門【11】:半次元COS圖爬取Python爬蟲
- python爬蟲 之 BeautifulSoup庫入門Python爬蟲
- 爬蟲不得不學之 JavaScript 入門篇爬蟲JavaScript
- 淘寶API分享:淘寶/天貓批次獲取商品重量資訊API
- Python爬蟲之小說資訊爬取與資料視覺化分析Python爬蟲視覺化
- Python爬蟲入門Python爬蟲
- Golang 爬蟲快速入門 | 獲取 B 站全站的視訊資料Golang爬蟲
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python