Python獲取淘寶商品相關(guān)信息

更多教程請(qǐng)移步至:洛涼博客

求助請(qǐng)移步至:Python自學(xué)技術(shù)交流

我感覺(jué)自己有個(gè)缺點(diǎn)挺不好的韧拒。不愛(ài)做筆記和總結(jié)。
自從工作之后發(fā)現(xiàn)不會(huì)做總結(jié)是多么沒(méi)有優(yōu)勢(shì)贞谓。
例如:寫個(gè)項(xiàng)目總結(jié)躺屁、工作總結(jié)、年中经宏,年終總結(jié)犀暑。
不百度或者谷歌下發(fā)現(xiàn)很難寫出點(diǎn)像樣的總結(jié)報(bào)告。


我希望自己能好好改掉這個(gè)缺點(diǎn)烁兰。以后對(duì)自己的所做所學(xué)加以記錄耐亏,方便以后查閱或溫習(xí)。

昨天一直在看中國(guó)大學(xué)MOOC大學(xué)沪斟,北京理工大學(xué)广辰,嵩教授主講的:Python網(wǎng)絡(luò)爬蟲(chóng)與信息提取暇矫。
(這里多說(shuō)一句【并非打廣告】,嵩教授講的確實(shí)不錯(cuò)择吊,思路和代碼書(shū)寫都很謹(jǐn)慎李根,每次都會(huì)強(qiáng)調(diào)代碼的穩(wěn)定性,有爬蟲(chóng)意向的朋友可以看看)


昨晚看的主要內(nèi)容為定向獲取某類商品的價(jià)格几睛,標(biāo)題房轿。
看完后自己按照思路敲了一遍。額外多獲取了一個(gè)商品屬性所森。
這個(gè)淘寶搜索后的商品信息好像是以JSON的形式存儲(chǔ)在源碼里面囱持。
PS:目前為止我好想還沒(méi)搞明白JSON和AJAX有沒(méi)有聯(lián)系。(以后對(duì)這方面知識(shí)進(jìn)行補(bǔ)充)


敲完代碼運(yùn)行后好像不成功焕济。
自己找了下原因纷妆,我查找的商品類型和嵩教授示例代碼里的商品類型不一致。
由于是通過(guò)正則進(jìn)行匹配的數(shù)據(jù)晴弃。(如需獲取還需改下正則表達(dá)式)
導(dǎo)致數(shù)據(jù)存儲(chǔ)對(duì)應(yīng)的鍵不一致掩幢。下面大家可以看下區(qū)別。

電腦價(jià)格.png

書(shū)包價(jià)格.png

其實(shí)如果用嵩教授的商品進(jìn)行獲取上鞠,可以獲取到更多的商品信息粒蜈。
例如商品的ID,其實(shí)獲取到了ID就可以進(jìn)行商品鏈接拼接旗国。
這張截圖是通過(guò)URL鏈接里的ID在頁(yè)面源碼找的到枯怖。
然后可以拼接成:天貓店鋪:https://detail.tmall.com/item.htm?id=42252465037,淘寶店鋪:https://item.taobao.com/item.htm?id=537105758663的方式進(jìn)行獲取商品鏈接能曾。
有興趣的可以嘗試下獲取更多商品信息度硝。
image.png

好了,其實(shí)爬蟲(chóng)需要的是思路寿冕,思路清晰蕊程,代碼就好寫了。
我寫的可以查找數(shù)碼這一類商品驼唱,例如藻茂,某品牌電腦,鍵盤玫恳,鼠標(biāo)辨赐,手機(jī)
如果失敗大家可以看下源碼里面價(jià)格和商品名稱對(duì)應(yīng)的數(shù)據(jù),相應(yīng)修改后就能正常京办。
下面直接貼我看完后以老師的思路進(jìn)行編寫的代碼掀序。

import requests
import re


def geturl(page,key):
    '''獲取搜索商品后的頁(yè)面源碼'''

    data = {
        'q':key,
        's':page*44
    }
    url = 'https://s.taobao.com/search?'
    try:
        html = requests.get(url,params=data)
        html.raise_for_status()
    except:
        print('-----初始鏈接獲取失敗-----')

    return html.text


def gethtml(html):
    '''匹配源碼里需要的數(shù)據(jù)'''

    try:
        goods = []
        #商品標(biāo)題,價(jià)格惭婿,付款人數(shù)正則表達(dá)式
        pat1 = r'\"price\":\"\d{1,5}\"'
        pat2 = r'\"title\":\".*?\"'
        pat3 = r'\"month_sales\":\"\d{1,9}\"'
    
        prices = re.findall(pat1,html)
        titles = re.findall(pat2,html)
        sales = re.findall(pat3,html)

        for i in range(len(titles)):
            #eval去掉字符串兩邊雙引號(hào)不恭,以分好切片獲取后面要的信息
            price = eval(prices[i].split(':')[1])
            title = eval(titles[i].split(':')[1])
            sale = eval(sales[i].split(':')[1])
            #將每個(gè)商品的價(jià)格叶雹,標(biāo)題,付款人數(shù)以表格形式存入到一個(gè)空列表
            goods.append([title,sale,price])
    except:
        print('-----信息獲取失敗-----')

    return goods


def printinfo(slist):
    '''打印獲取到的商品信息'''
    #format打印格式
    law = '{:^4}\t{:^8}\t{:^8}\t{:^16}'
    print(law.format('序號(hào)','商品價(jià)格','已付款人數(shù)','商品名稱'))
    num = 0 #初始化序號(hào)
    for x in slist:
        num+=1
        print(law.format(num,x[2],x[1],x[0]))


def main():
    '''程序運(yùn)行入口'''
    pages = int(input('請(qǐng)輸入要查詢的頁(yè)數(shù):'))
    good_name = input('請(qǐng)輸入需要查找的商品類型:')
    for page in range(pages):
        try:
            html = geturl(page,good_name)
            slist = gethtml(html)
            printinfo(slist)
        except:
            print('-----程序運(yùn)行出錯(cuò)-----')


if __name__ == '__main__':
    main()

運(yùn)行后打印效果.png

下面我也把嵩老師代碼貼一下换吧,大家不要直接復(fù)制運(yùn)行折晦。會(huì)報(bào)錯(cuò)。
要試的自己按照代碼敲一遍沾瓦。

import requests
import re
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)         
        r.raise_for_status()         
        r.encoding = r.apparent_encoding         
        return r.text     
    except:         
        return ""      

def parsePage(ilt, html):     
    try:         
        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])             
            title = eval(tlt[i].split(':')[1])             
            ilt.append([price , title])     
        except:         print("") 

def printGoodsList(ilt):     
    tplt = "{:4}\t{:8}\t{:16}"     
    print(tplt.format("序號(hào)", "價(jià)格", "商品名稱"))     
    count = 0     
    for g in ilt:         
        count = count + 1         
        print(tplt.format(count, g[0], g[1]))          

def main():     
    goods = '書(shū)包'     
    depth = 3     
    start_url = 'https://s.taobao.com/search?q=' + goods     
    infoList = []     
    for i in range(depth):         
        try:             
            url = start_url + '&s=' + str(44*i)             
            html = getHTMLText(url)             
            parsePage(infoList, html)         
        except:             
            continue     
            printGoodsList(infoList)      

main()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末满着,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子暴拄,更是在濱河造成了極大的恐慌,老刑警劉巖编饺,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乖篷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡透且,警方通過(guò)查閱死者的電腦和手機(jī)撕蔼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秽誊,“玉大人鲸沮,你說(shuō)我怎么就攤上這事」郏” “怎么了讼溺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)最易。 經(jīng)常有香客問(wèn)我怒坯,道長(zhǎng),這世上最難降的妖魔是什么藻懒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任剔猿,我火速辦了婚禮,結(jié)果婚禮上嬉荆,老公的妹妹穿的比我還像新娘归敬。我一直安慰自己,他們只是感情好鄙早,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布汪茧。 她就那樣靜靜地躺著,像睡著了一般限番。 火紅的嫁衣襯著肌膚如雪陆爽。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天扳缕,我揣著相機(jī)與錄音慌闭,去河邊找鬼别威。 笑死,一個(gè)胖子當(dāng)著我的面吹牛驴剔,可吹牛的內(nèi)容都是我干的省古。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丧失,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼豺妓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起布讹,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤琳拭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后描验,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體白嘁,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年膘流,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了絮缅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呼股,死狀恐怖耕魄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情彭谁,我是刑警寧澤吸奴,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站缠局,受9級(jí)特大地震影響奄抽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甩鳄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一逞度、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妙啃,春花似錦档泽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至燥滑,卻和暖如春渐北,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铭拧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工赃蛛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恃锉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓呕臂,卻偏偏與公主長(zhǎng)得像破托,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歧蒋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345