最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用python爬取分析淘寶商品信息詳解技術(shù)篇

 更新時間:2021年08月24日 10:30:56   作者:不正經(jīng)的kimol君  
這篇文章主要介紹了用python爬取分析淘寶商品信息的技術(shù),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Tip:本文僅供學(xué)習(xí)與交流,切勿用于非法用途?。?!

背景介紹

有個同學(xué)問我:“XXX,有沒有辦法搜集一下淘寶的商品信息啊,我想要做個統(tǒng)計”。于是乎,閑來無事的我,又開始琢磨起這事…

在這里插入圖片描述

一、模擬登陸

興致勃勃的我,沖進淘寶就準(zhǔn)備一頓亂搜:

在這里插入圖片描述

在搜索欄里填好關(guān)鍵詞:“顯卡”,小手輕快敲擊著回車鍵(小樣~看我的)
心情愉悅的我等待著返回滿滿的商品信息,結(jié)果苦苦的等待換了的卻是302,于是我意外地來到了登陸界面。

在這里插入圖片描述

情況基本就是這么個情況了…
然后我查了一下,隨著淘寶反爬手段的不斷加強,很多小伙伴應(yīng)該已經(jīng)發(fā)現(xiàn),淘寶搜索功能是需要用戶登陸的!

關(guān)于淘寶模擬登陸,有大大已經(jīng)利用requests成功模擬登陸(感興趣的小伙伴請往這邊>>>requests登陸淘寶<<<)
這個方法得先分析淘寶登陸的各種請求,并模擬生成相應(yīng)的參數(shù),相對來說有一定的難度。于是我決定換一種思路,通過selenium+二維碼的方式:

# 打開圖片
def Openimg(img_location):
    img=Image.open(img_location)
    img.show()

# 登陸獲取cookies
def Login():  
    driver = webdriver.PhantomJS() 
    driver.get('https://login.taobao.com/member/login.jhtml')
    try:
        driver.find_element_by_xpath('//*[@id="login"]/div[1]/i').click()
    except:
        pass
    time.sleep(3)
    # 執(zhí)行JS獲得canvas的二維碼
    JS = 'return document.getElementsByTagName("canvas")[0].toDataURL("image/png");'
    im_info = driver.execute_script(JS) # 執(zhí)行JS獲取圖片信息
    im_base64 = im_info.split(',')[1]  #拿到base64編碼的圖片信息
    im_bytes = base64.b64decode(im_base64)  #轉(zhuǎn)為bytes類型
    time.sleep(2)
    with open('./login.png','wb') as f:
        f.write(im_bytes)
        f.close()
    t = threading.Thread(target=Openimg,args=('./login.png',))
    t.start()
    print("Logining...Please sweep the code!\n")
    while(True):
        c = driver.get_cookies()
        if len(c) > 20:   #登陸成功獲取到cookies
            cookies = {}
            for i in range(len(c)):
                cookies[c[i]['name']] = c[i]['value']
            driver.close()
            print("Login in successfully!\n")
            return cookies
        time.sleep(1)

通過webdriver打開淘寶登陸界面,把二維碼下載到本地并打開等待用戶掃碼(相應(yīng)的元素大家通過瀏覽器的F12元素分析很容易就能找出)。待掃碼成功后,將webdriver里的cookies轉(zhuǎn)為DICT形式,并返回。(這里是為了后續(xù)requests爬取信息的時候使用)

二、爬取商品信息

當(dāng)我拿到cookies之后,便能對商品信息進行爬取了。
(小樣 ~我來啦)

1. 定義相關(guān)參數(shù)

定義相應(yīng)的請求地址,請求頭等等:

# 定義參數(shù)
headers = {'Host':'s.taobao.com',
           'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0',
           'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
           'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
           'Accept-Encoding':'gzip, deflate, br',
           'Connection':'keep-alive'}
list_url = 'http://s.taobao.com/search?q=%(key)s&ie=utf8&s=%(page)d'

2. 分析并定義正則

當(dāng)請求得到HTML頁面后,想要得到我們想要的數(shù)據(jù)就必須得對其進行提取,這里我選擇了正則的方式。通過查看頁面源碼:

在這里插入圖片描述

偷懶的我上面只標(biāo)志了兩個數(shù)據(jù),不過其他也是類似的,于是得到以下正則:

# 正則模式
p_title = '"raw_title":"(.*?)"'       #標(biāo)題
p_location = '"item_loc":"(.*?)"'    #銷售地
p_sale = '"view_sales":"(.*?)人付款"' #銷售量
p_comment = '"comment_count":"(.*?)"'#評論數(shù)
p_price = '"view_price":"(.*?)"'     #銷售價格
p_nid = '"nid":"(.*?)"'              #商品唯一ID
p_img = '"pic_url":"(.*?)"'          #圖片URL

(ps.聰明的小伙伴應(yīng)該已經(jīng)發(fā)現(xiàn)了,其實商品信息是被保存在了g_page_config變量里面,所以我們也可以先提取這個變量(一個字典),然后再讀取數(shù)據(jù),也可!)

3. 數(shù)據(jù)爬取

完事具備,只欠東風(fēng)。于是,東風(fēng)來了:

# 數(shù)據(jù)爬取
key = input('請輸入關(guān)鍵字:') # 商品的關(guān)鍵詞
N = 20 # 爬取的頁數(shù) 
data = []
cookies = Login()
for i in range(N):
    try:
        page = i*44
        url = list_url%{'key':key,'page':page}
        res = requests.get(url,headers=headers,cookies=cookies)
        html = res.text
        title = re.findall(p_title,html)
        location = re.findall(p_location,html)
        sale = re.findall(p_sale,html)
        comment = re.findall(p_comment,html)
        price = re.findall(p_price,html)
        nid = re.findall(p_nid,html)
        img = re.findall(p_img,html)
        for j in range(len(title)):
            data.append([title[j],location[j],sale[j],comment[j],price[j],nid[j],img[j]])
        print('-------Page%s complete!--------\n\n'%(i+1))
        time.sleep(3)
    except:
        pass
data = pd.DataFrame(data,columns=['title','location','sale','comment','price','nid','img'])
data.to_csv('%s.csv'%key,encoding='utf-8',index=False)

上面代碼爬取20也商品信息,并將其保存在本地的csv文件中,效果是這樣的:

在這里插入圖片描述

三、簡單數(shù)據(jù)分析

有了數(shù)據(jù),放著豈不是浪費,我可是社會主義好青年,怎能做這種事? 那么,就讓我們來簡單看看這些數(shù)據(jù)叭:
(當(dāng)然,數(shù)據(jù)量小,僅供娛樂參考)

1.導(dǎo)入庫

# 導(dǎo)入相關(guān)庫
import jieba
import operator
import pandas as pd
from wordcloud import WordCloud
from matplotlib import pyplot as plt

相應(yīng)庫的安裝方法(其實基本都能通過pip解決):

  • jieba
  • pandas
  • wordcloud
  • matplotlib

2.中文顯示

# matplotlib中文顯示
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

不設(shè)置可能出現(xiàn)中文亂碼等鬧心的情況哦~

3.讀取數(shù)據(jù)

# 讀取數(shù)據(jù)
key = '顯卡'
data = pd.read_csv('%s.csv'%key,encoding='utf-8',engine='python')

4.分析價格分布

# 價格分布
plt.figure(figsize=(16,9))
plt.hist(data['price'],bins=20,alpha=0.6)
plt.title('價格頻率分布直方圖')
plt.xlabel('價格')
plt.ylabel('頻數(shù)')
plt.savefig('價格分布.png')

價格頻率分布直方圖:

在這里插入圖片描述

5.分析銷售地分布

# 銷售地分布
group_data = list(data.groupby('location'))
loc_num = {}
for i in range(len(group_data)):
    loc_num[group_data[i][0]] = len(group_data[i][1])
plt.figure(figsize=(19,9))
plt.title('銷售地')
plt.scatter(list(loc_num.keys())[:20],list(loc_num.values())[:20],color='r')
plt.plot(list(loc_num.keys())[:20],list(loc_num.values())[:20])
plt.savefig('銷售地.png')
sorted_loc_num = sorted(loc_num.items(), key=operator.itemgetter(1),reverse=True)#排序
loc_num_10 = sorted_loc_num[:10]  #取前10
loc_10 = []
num_10 = []
for i in range(10):
    loc_10.append(loc_num_10[i][0])
    num_10.append(loc_num_10[i][1])
plt.figure(figsize=(16,9))
plt.title('銷售地TOP10')
plt.bar(loc_10,num_10,facecolor = 'lightskyblue',edgecolor = 'white')
plt.savefig('銷售地TOP10.png')

銷售地分布:

在這里插入圖片描述

銷售地TOP10:

在這里插入圖片描述

6.詞云分析

# 制作詞云
content = ''
for i in range(len(data)):
    content += data['title'][i]
wl = jieba.cut(content,cut_all=True)
wl_space_split = ' '.join(wl)
wc = WordCloud('simhei.ttf',
               background_color='white', # 背景顏色
               width=1000,
               height=600,).generate(wl_space_split)
wc.to_file('%s.png'%key)

淘寶商品”顯卡“的詞云:

在這里插入圖片描述

寫在最后

感謝各位大大的耐心閱讀~

到此這篇關(guān)于用python爬取分析淘寶商品信息詳解技術(shù)篇的文章就介紹到這了,更多相關(guān)python爬取淘寶商品信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)前端樣式尺寸單位轉(zhuǎn)換

    Python實現(xiàn)前端樣式尺寸單位轉(zhuǎn)換

    在?Web?前端項目開發(fā)時,樣式尺寸都是以?rpx?為單位,可是?UI?設(shè)計師在看完開發(fā)后的?UI?,卻要求都以?px?為單位,所以本文就和大家分享一個利用Python就能實現(xiàn)尺寸單位轉(zhuǎn)換的方法吧
    2023-06-06
  • Python中的imread()函數(shù)用法說明

    Python中的imread()函數(shù)用法說明

    這篇文章主要介紹了Python中的imread()函數(shù)用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • pycharm雙擊無響應(yīng)(打不開問題解決辦法)

    pycharm雙擊無響應(yīng)(打不開問題解決辦法)

    這篇文章主要介紹了pycharm雙擊無響應(yīng)(打不開問題解決辦法),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python利用AI接口實現(xiàn)摳圖并改圖片底色

    Python利用AI接口實現(xiàn)摳圖并改圖片底色

    時候我們的證件照需要換底色,又來不及去照相館拍照,用ps也不好摳圖,所以今天給你們分享一下如何用python來摳圖,并換底色,需要的可以參考一下
    2022-09-09
  • 使用python實現(xiàn)ANN

    使用python實現(xiàn)ANN

    這篇文章主要為大家詳細(xì)介紹了使用python實現(xiàn)ANN的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 對python多線程與global變量詳解

    對python多線程與global變量詳解

    今天小編就為大家分享一篇對python多線程與global變量詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 簡單分析python的類變量、實例變量

    簡單分析python的類變量、實例變量

    在本篇文章中小編給大家整理的是關(guān)于python類變量、實例變量的知識點內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • Python讀取二進制文件代碼方法解析

    Python讀取二進制文件代碼方法解析

    這篇文章主要介紹了Python讀取二進制文件代碼方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • NumPy中的實用函數(shù)clip詳解

    NumPy中的實用函數(shù)clip詳解

    這篇文章主要介紹了NumPy中的實用函數(shù)clip詳解,NumPy函數(shù)clip()用于保留數(shù)組中在間隔范圍內(nèi)的值,給定一個范圍,范圍外的值將剪裁到范圍邊界,需要的朋友可以參考下的相關(guān)資料
    2023-08-08
  • python中pandas庫中DataFrame對行和列的操作使用方法示例

    python中pandas庫中DataFrame對行和列的操作使用方法示例

    這篇文章主要介紹了python中pandas庫中DataFrame對行和列的操作使用方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論

邵阳县| 曲阜市| 泊头市| 宁都县| 砚山县| 左贡县| 朝阳区| 盐源县| 武平县| 巴彦淖尔市| 宜兴市| 塘沽区| 临澧县| 张北县| 桃源县| 长子县| 公安县| 科技| 开封县| 阿巴嘎旗| 九龙县| 赤城县| 原平市| 宝清县| 十堰市| 贵德县| 石嘴山市| 望奎县| 罗源县| 龙川县| 新津县| 梁河县| 花垣县| 昌乐县| 阜平县| 科技| 维西| 林周县| 玛多县| 湘潭县| 浦东新区|