小編給大家分享一下Python如何通過(guò)正則庫(kù)爬取淘寶商品信息,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)是專業(yè)的白云鄂網(wǎng)站建設(shè)公司,白云鄂接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行白云鄂網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!使用正則庫(kù)爬取淘寶商品的商品信息,首先我們需要確定想要爬取的對(duì)象
我們?cè)谔詫毨锼阉鳌皃ython”,出來(lái)的結(jié)果
從url連接中可以得到搜索商品的關(guān)鍵字是“q=”,所以我們要用的起始url為:https://s.taobao.com/search?q=python
然后翻頁(yè),經(jīng)過(guò)對(duì)比發(fā)現(xiàn),翻頁(yè)后,變化的關(guān)鍵字是s,每次翻頁(yè),s便以44的倍數(shù)增長(zhǎng)(可以數(shù)一下每頁(yè)顯示的商品數(shù)量,剛好是44)
所以可以根據(jù)關(guān)鍵字“s=”,來(lái)設(shè)置爬取的深度(爬取多少頁(yè))
右鍵查看源碼,商品名稱可能的關(guān)鍵字是“title”和“raw_title”,進(jìn)一步多看幾個(gè)商品的名稱,發(fā)現(xiàn)選取“raw_title”比較合適;商品價(jià)格自然就是“view_price”(通過(guò)比對(duì)淘寶商品展示頁(yè)面);所以商品名稱和商品價(jià)格分別是以"raw_title":"名稱"和"view_price":"價(jià)格",這樣的鍵/值對(duì)的形式展示的。
# coding:utf-8 import requests import re goods = '水杯' url = 'https://s.taobao.com/search?q=' + goods r = requests.get(url=url, timeout=10) html = r.text tlist = re.findall(r'\"raw_title\"\:\".*?\"', html) # 正則提取商品名稱 plist = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) # 正則提示商品價(jià)格 print(tlist) print(plist) print(type(plist)) # 正則表達(dá)式提取出的商品名稱和商品價(jià)格都是以列表形式存儲(chǔ)數(shù)據(jù)的
利用for循環(huán),把每個(gè)商品的名稱和價(jià)格組成一個(gè)列表,然后把這寫列表再追加到一個(gè)大列表中:
goodlist = [] for i in range(len(tlist)): title = eval(tlist[i].split(':')[1]) # eval()函數(shù)簡(jiǎn)單說(shuō)就是用于去掉字符串的引號(hào) price = eval(plist[i].split(':')[1]) goodlist.append([title, price]) # 把每個(gè)商品的名稱和價(jià)格組成一個(gè)小列表,然后把所有商品組成的列表追加到一個(gè)大列表中 print(goodlist)
大概的思路就是這樣的。
def get_html(url): """獲取源碼html""" try: r = requests.get(url=url, timeout=10) r.encoding = r.apparent_encoding return r.text except: print("獲取失敗") def get_data(html, goodlist): """使用re庫(kù)解析商品名稱和價(jià)格 tlist:商品名稱列表 plist:商品價(jià)格列表""" tlist = re.findall(r'\"raw_title\"\:\".*?\"', html) plist = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) for i in range(len(tlist)): title = eval(tlist[i].split(':')[1]) # eval()函數(shù)簡(jiǎn)單說(shuō)就是用于去掉字符串的引號(hào) price = eval(plist[i].split(':')[1]) goodlist.append([title, price]) def write_data(list, num): # with open('E:/Crawler/case/taob2.txt', 'a') as data: # print(list, file=data) for i in range(num): # num控制把爬取到的商品寫進(jìn)多少到文本中 u = list[i] with open('E:/Crawler/case/taob.txt', 'a') as data: print(u, file=data) def main(): goods = '水杯' depth = 3 # 定義爬取深度,即翻頁(yè)處理 start_url = 'https://s.taobao.com/search?q=' + goods infoList = [] for i in range(depth): try: url = start_url + '&s=' + str(44 * i) # 因?yàn)樘詫氾@示每頁(yè)44個(gè)商品,第一頁(yè)i=0,一次遞增 html = get_html(url) get_data(html, infoList) except: continue write_data(infoList, len(infoList)) if __name__ == '__main__': main()
以上是“Python如何通過(guò)正則庫(kù)爬取淘寶商品信息”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站欄目:Python如何通過(guò)正則庫(kù)爬取淘寶商品信息-創(chuàng)新互聯(lián)
本文鏈接:http://aaarwkj.com/article14/ccosde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容