国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

爬蟲——有關(guān)抖音商品數(shù)據(jù)的爬?。ㄏs媽媽數(shù)據(jù)平臺)

這篇具有很好參考價值的文章主要介紹了爬蟲——有關(guān)抖音商品數(shù)據(jù)的爬?。ㄏs媽媽數(shù)據(jù)平臺)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

抖音帶貨的興起,讓抖音電商一躍成為與淘寶電商、京東電商等電商平臺共同爭奪電商市場的存在,與淘寶電商、京東電商等電商平臺相比,抖音電商擁有獨特的優(yōu)勢,抖音以短視頻的形式能夠帶來巨大的流量和熱度,抖音以此為基礎(chǔ)帶來全新的帶貨方式——短視頻帶貨,除此之外,抖音因其高流量高熱度的基礎(chǔ),使得開展直播帶貨的途徑順其自然了許多。在此背景之下,抖音電商的商品銷售數(shù)據(jù)的獲取和總結(jié)分析歸納對于抖音電商調(diào)整當(dāng)前銷售結(jié)構(gòu)和形式以及對未來的規(guī)劃有著重大意義。
除此之外,也給一些想要簡單爬取一些抖音商品銷售數(shù)據(jù)的同學(xué)們一個便捷易懂的方法。

目標(biāo)

由于通過抖音頁面對商品銷售數(shù)據(jù)進行爬取過于繁瑣,工作量大,因此決定通過對蟬媽媽數(shù)據(jù)平臺(擁有抖音商品銷售數(shù)據(jù)的各大榜單)進行抖音商品銷售數(shù)據(jù)的獲取,又因想要通過蟬媽媽數(shù)據(jù)平臺直接進行數(shù)據(jù)的獲取所需要的成本和花銷太大,因此決定通過以爬蟲的形式對蟬媽媽數(shù)據(jù)平臺的各大抖音商品銷售數(shù)據(jù)榜單進行數(shù)據(jù)爬取,由新人注冊蟬媽媽數(shù)據(jù)平臺都會獲得免費的會員時間,但免費的會員只能夠查看數(shù)據(jù),并不能對數(shù)據(jù)的直接導(dǎo)出,因此可以通過免費的會員使用爬蟲對各大榜單數(shù)據(jù)進行爬取。
打開蟬媽媽數(shù)據(jù)平臺以后,選擇一個銷售榜單,本文以直播帶貨的榜單為例,后續(xù)的網(wǎng)頁下載、數(shù)據(jù)解析、數(shù)據(jù)存儲和數(shù)據(jù)預(yù)處理都以直播帶貨榜單開展,其他榜單的相關(guān)處理與直播帶貨榜單相差不大,所以就以直播帶貨榜單為例,爬取方法以selenium自動化庫為主。

抖店 爬蟲,爬蟲,python,beautifulsoup,selenium,html

爬取過程

網(wǎng)頁源代碼查看及分析

抖店 爬蟲,爬蟲,python,beautifulsoup,selenium,html

查看網(wǎng)頁源代碼以后,簡單知道每一條直播帶貨的數(shù)據(jù)都存儲在<tr></tr>標(biāo)簽中,因此我們便可得知,只要抓取所有的<tr></tr>標(biāo)簽,再對所有的<tr></tr>標(biāo)簽進行處理,對每一個<tr></tr>標(biāo)簽里的數(shù)據(jù)進行分割讀?。恳粋€<td></td>標(biāo)簽內(nèi)含有的便是每一條直播帶貨數(shù)據(jù):直播銷量、直播銷售額等),就能得到每一條直播帶貨數(shù)據(jù)。

抖店 爬蟲,爬蟲,python,beautifulsoup,selenium,html
上圖可知一條直播銷售具體數(shù)據(jù)存儲在<tr></tr>標(biāo)簽中的每一個<td></td>標(biāo)簽中。
因此只要獲取每個<tr></tr>標(biāo)簽,再從每個標(biāo)簽中逐一分析<td></td>所含具體商品銷售數(shù)據(jù),即可獲得預(yù)計要得到的內(nèi)容。

網(wǎng)頁下載

由于為了應(yīng)對反爬機制,本爬蟲主要使用了selenium自動化模塊,因此網(wǎng)頁下載部分沒有一個單獨的模塊用來進行網(wǎng)頁下載,因此也就沒有ip代理池、headers、cookies的設(shè)置,所有就只有一行代碼進行網(wǎng)頁的下載(selenium.webdriver中自帶的網(wǎng)頁下載方法)

html = driver.page_source

數(shù)據(jù)解析

根據(jù)上述的網(wǎng)頁源代碼分析,對每一個<td></td>標(biāo)簽進行解析,對要得到的每一個商品特征信息進行查看,對其html位置進行解析,便可得到以下代碼。
數(shù)據(jù)解析單獨建立一個模塊。解析過程中使用bs解析器。

from bs4 import BeautifulSoup
from selenium import webdriver
class WatchingParser:
    def __init__(self):
        self.base_url = "https://www.chanmama.com/"
        self.driver = webdriver.Chrome()
    def get_data(self,html_content):
        print("開始解析數(shù)據(jù)")

        if html_content is None:
            return  None

        # 匯總當(dāng)前頁所有數(shù)據(jù)
        result_data = []
        soup = BeautifulSoup(html_content,'lxml')

        # 獲取所有tr標(biāo)簽
        all_data = soup.find_all('tr')
        all_data = all_data[2:]
        i = 1
        # 分析每一個tr標(biāo)簽的數(shù)據(jù)
        try:
            while i < 51:
                data = all_data[i]
                # 獲取直播名稱
                name = data.find_all('a',class_='text-decoration-none c333 link-hover cursor-pointer')
                watch_name = name[0].text
                watch_name = watch_name.replace("\n", "")
                watch_name = watch_name.replace(" ", "")
                # print(watch_name)
                
                # 獲取達人名稱
                people_name = name[1].text
                people_name = people_name.replace("\n", "")
                people_name = people_name.replace(" ", "")
                # print(people_name)
                
                # 獲取達人粉絲數(shù)
                fans_quantity = data.find('span',class_='c999').text
                fans_quantity = fans_quantity.replace("\n", "")
                fans_quantity = fans_quantity.replace(" ", "")
                # print(fans_quantity)
                
                # 獲取開播時間
                watch_start = data.find('td',class_='fs14').text
                watch_start = watch_start.replace("\n", "")
                watch_start = watch_start.replace(" ", "")
                # print(watch_start)
                
                # 獲取直播時長
                watch_all = data.find_all('div',class_='text-align-left pl15')
                watch_longth = watch_all[1].text
                watch_longth = watch_longth.replace("\n", "")
                watch_longth = watch_longth.replace(" ", "")
                # print(watch_longth)
                
                # 獲取人氣峰值
                peak = data.find('td',class_='text-align-right').text
                peak = peak.replace("\n", "")
                peak = peak.replace(" ", "")
                # print(peak)
                
                # 獲取觀看人次
                watching_people = data.find('td',class_='divider text-align-right').text
                watching_people = watching_people.replace("\n", "")
                watching_people = watching_people.replace(" ", "")
                # print(watching_people)
                
                commodity = data.find_all('div',class_='text-align-right pr20')
                
                # 獲取商品數(shù)
                commodity_quantity = commodity[0].text
                commodity_quantity = commodity_quantity.replace("\n", "")
                commodity_quantity = commodity_quantity.replace(" ", "")
                # print(commodity_quantity)
                
                # 獲取銷售額
                sale_money = commodity[1].text
                sale_money = sale_money.replace("\n", "")
                sale_money = sale_money.replace(" ", "")
                # print(sale_money)
                
                # 獲取銷售量
                sale_quantity = commodity[2].text
                sale_quantity = sale_quantity.replace("\n", "")
                sale_quantity = sale_quantity.replace(" ", "")
                # print(sale_quantity)
                
                item = {
                    'wacth_name' : watch_name,
                    'people_name' : people_name,
                    'fans_quantity' : fans_quantity,
                    'watch_start' : watch_start,
                    'watch_longth' : watch_longth,
                    'peak' : peak,
                    'wacthing_people' : watching_people,
                    'commodity_quantity' : commodity_quantity,
                    'sale_money' : sale_money,
                    'sale_quantity' : sale_quantity
                }
                # print(item)
                result_data.append(item)
                i = i + 1
                # print(i)
        except Exception as e:
            print(e)
        return result_data

數(shù)據(jù)存儲

數(shù)據(jù)存儲部分也單獨建立一個模塊。

import csv
import pymongo

class DataStorage:
    def __init__(self):
        self.alldata=[]

    def store_data(self, data):
        if data is None:
            return
        self.alldata.append(data)
    def watching_output_file(self,filename):
        print("開始將數(shù)據(jù)寫入文件")
        file = open(filename, 'w', newline='', encoding='utf-8-sig')
        csv_writer = csv.writer(file, dialect='excel')
        #由于數(shù)據(jù)存儲的是二維數(shù)組([{,},{},{},{}] 形式的,因此需要先讀取一個{},再對里面的信息進行鍵值對分離
        for data in self.alldata:
            print(data)
            for note in data:
                print(note)
                cols = note.items()
                row = []
                for key, value in cols:
                    row.append(value)
                csv_writer.writerow(row)
        file.close()        

主程序

主程序運行,將數(shù)據(jù)解析和數(shù)據(jù)存儲模塊導(dǎo)入。

import time
from WatchingParser import *
from DataStorage import *
from selenium import webdriver

# 達人直播帶貨榜單數(shù)據(jù)獲取

class WacthingMain:
    def __init__(self):
        self.parser = WatchingParser()
        self.datastorage = DataStorage()

    def set_limit(self, limit):
        self.urlmanager.set_limit(limit)

    def crawl(self, root_url, filename):
        driver = webdriver.Chrome(executable_path="D:\\Spider\\tiktok\\chromedriver\\chromedriver.exe")

        # 模擬登錄,訪問直播帶貨頁面
        driver.get(root_url)
        time.sleep(7)

        # 進行賬號的模擬登錄
        driver.find_element_by_id('e2e-login-btn').click()
        time.sleep(3)
        driver.find_element_by_id('e2e-login-username').send_keys('17858855600')
        driver.find_element_by_id('e2e-login-password').send_keys('123456')
        driver.find_element_by_id('e2e-login-submit').click()
        time.sleep(5)
        # 進行30頁的數(shù)據(jù)爬取
        i = 1
        while i < 21:
            print("進行第" + str(i) + "頁數(shù)據(jù)抓取")
            try:
                time.sleep(7)
                html = driver.page_source
                # 對當(dāng)前網(wǎng)頁的html進行解析,獲取當(dāng)前商品信息,存入data
                data = self.parser.get_data(html)
                print(data)
                # 將data存入到datastorage的all_data屬性中
                if data:
                    self.datastorage.store_data(data)
                print("成功抓取到第" + str(i) + "頁數(shù)據(jù)")
            except Exception as e:
                print(e)
                print("第" + str(i) + "頁抓取失敗")
            #下一頁點擊     
            driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[2]/div/div/div/div/div/div[2]/div[4]/div/button[2]/i").click()
            i = i + 1
        driver.quit()
        self.datastorage.watching_output_file(filename)

if __name__ == '__main__':
    root_url="https://www.chanmama.com/liveSearch?keyword=&search_type=0&follower_count=&gift_count=&volume=&is_take_product=0"
    spider_main = WacthingMain()
    spider_main.crawl(root_url,'D:\\Spider\\tiktok\\wacthing_data.csv')

數(shù)據(jù)預(yù)處理

對爬取到的數(shù)據(jù)進行一些簡單的數(shù)據(jù)預(yù)處理,以下為爬取到的數(shù)據(jù)。
抖店 爬蟲,爬蟲,python,beautifulsoup,selenium,html
使用excel中的分列功能,對其進行以,為分隔符進行分割,并且使用刪除重復(fù)值,得到以下的數(shù)據(jù)表。
抖店 爬蟲,爬蟲,python,beautifulsoup,selenium,html
由于粉絲數(shù)等具有w字單位的,會對后續(xù)的分析有影響,所有統(tǒng)一將w替換成000,將其變成數(shù)值類型,方便后續(xù)的分析。
由于銷售量和銷售額是一個區(qū)間,再根據(jù)其是一個固定的劃分區(qū)間,具有一個遞增的規(guī)律,因此對每個區(qū)間進行等級賦值,得到銷售量等級數(shù)據(jù)列,方便后續(xù)的分析。得到以下的數(shù)據(jù)表。
抖店 爬蟲,爬蟲,python,beautifulsoup,selenium,html

總結(jié)和不足

總體代碼運用了selenium自動化模塊,能夠有效地應(yīng)對平臺的反爬機制,從而有效地獲取到網(wǎng)頁的數(shù)據(jù),但又由于使用的是selenium自動化模塊,所以總體的代碼運行效率不是很高,耗時長。
整個數(shù)據(jù)預(yù)處理總體上使用了excel的功能,雖有效地解決了要解決的問題,但有些處理過程并不簡單有效率,預(yù)處理只做了剔除重復(fù)值,刪除空白字段,和對銷售區(qū)間進行等級映射賦值,還有其他的預(yù)處理過程并未進行,使得數(shù)據(jù)格式或有效程度未達到最大。文章來源地址http://www.zghlxwxcb.cn/news/detail-712751.html

到了這里,關(guān)于爬蟲——有關(guān)抖音商品數(shù)據(jù)的爬?。ㄏs媽媽數(shù)據(jù)平臺)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 開源的可視化爬蟲易采集EasySpider:如何無代碼可視化的爬取需要登錄才能爬的網(wǎng)站

    開源的可視化爬蟲易采集EasySpider:如何無代碼可視化的爬取需要登錄才能爬的網(wǎng)站

    一個可視化爬蟲軟件,可以使用圖形化界面,無代碼可視化的設(shè)計和執(zhí)行爬蟲任務(wù)。只需要在網(wǎng)頁上選擇自己想要爬的內(nèi)容并根據(jù)提示框操作即可完成爬蟲設(shè)計和執(zhí)行。同時軟件還可以單獨以命令行的方式進行執(zhí)行,從而可以很方便的嵌入到其他系統(tǒng)中。 EasySpider 是一種無代

    2024年02月15日
    瀏覽(16)
  • 【python爬蟲】閑魚爬蟲,可以爬取商品

    【python爬蟲】閑魚爬蟲,可以爬取商品

    目錄 前言 一、介紹 二、爬蟲流程 1. 確定并構(gòu)造URL 2. 發(fā)送網(wǎng)絡(luò)請求 3. 解析HTML并提取數(shù)據(jù) 4. 保存數(shù)據(jù) 三、使用代理IP 四、完整代碼 五、總結(jié) 前言 閑魚是一個很受歡迎的二手交易平臺,但是由于沒有開放API,我們需要使用爬蟲來獲取數(shù)據(jù)。本文將介紹如何使用Python爬

    2024年02月08日
    瀏覽(29)
  • 爬蟲——python爬取京東商品用戶評價

    爬蟲——python爬取京東商品用戶評價

    以小米手環(huán)7為例,分別爬取小米手環(huán)7用戶評價中的好評、中評、差評 使用工具:PyCharm Community 需要python庫:requests 安裝方法:File--Settings--Project --Python Interpreter 代碼如下: 好評: 中評: 差評: 其中重要參數(shù)來源: 打開開發(fā)者工具,快捷鍵F12鍵,或鼠標(biāo)右鍵--檢查--網(wǎng)絡(luò)

    2024年02月11日
    瀏覽(21)
  • Python如何運用爬蟲爬取京東商品評論

    Python如何運用爬蟲爬取京東商品評論

    打開京東商品網(wǎng)址(添加鏈接描述) 查看商品評價 。我們點擊評論翻頁,發(fā)現(xiàn)網(wǎng)址未發(fā)生變化,說明該網(wǎng)頁是動態(tài)網(wǎng)頁。 我們在 瀏覽器右鍵點擊“檢查” ,,隨后 點擊“Network” ,刷新一下,在搜索框中 輸入”評論“ ,最終找到 網(wǎng)址(url) 。我們點擊Preview,發(fā)現(xiàn)了我們需要

    2024年02月07日
    瀏覽(23)
  • 爬蟲之牛刀小試(十):爬取某寶手機商品的銷量,價格和店鋪

    爬蟲之牛刀小試(十):爬取某寶手機商品的銷量,價格和店鋪

    首先淘寶需要登錄,這一點如果用selenium如何解決,只能手動登錄?如果不用selenium,用cookies登錄也可。但是驗證碼又是一個問題,現(xiàn)在的驗證碼五花八門,難以處理。 我們回到正題,假設(shè)你已經(jīng)登錄上淘寶了,接著我們需要找到輸入框和搜索按鈕,輸入“手機”,點擊搜索

    2024年04月10日
    瀏覽(21)
  • 基于Selenium技術(shù)方案的爬取界面內(nèi)容實踐

    基于Selenium技術(shù)方案的爬取界面內(nèi)容實踐

    WebDriver提供了處理多個窗口的能力,這是通過使用“WebDriver.switchTo.window()”方法來切換到已知名稱的窗口來實現(xiàn)的。如果名稱未知,您可以使用“WebDriver.getWindowHandles()”獲取已知窗口列表。您可以將句柄傳遞給switchTo.window()。 獲取當(dāng)前窗口句柄 driver.current_window_handle 返回的所

    2024年02月11日
    瀏覽(31)
  • 淘寶商品數(shù)據(jù)爬取商品信息采集數(shù)據(jù)分析API接口

    ? ? ?數(shù)據(jù)采集是數(shù)據(jù)可視化分析的第一步,也是最基礎(chǔ)的一步,數(shù)據(jù)采集的數(shù)量和質(zhì)量越高,后面分析的準(zhǔn)確的也就越高,我們來看一下淘寶網(wǎng)的數(shù)據(jù)該如何爬取。 點此獲取淘寶API測試key密鑰 淘寶網(wǎng)站是一個動態(tài)加載的網(wǎng)站,我們之前可以采用解析接口或者用Selenium自動化

    2024年03月11日
    瀏覽(32)
  • Python爬取電商數(shù)據(jù):商品采集接口 商品詳情數(shù)據(jù)API 商品主圖接口

    Python爬取電商數(shù)據(jù):商品采集接口 商品詳情數(shù)據(jù)API 商品主圖接口

    學(xué)習(xí) Python 自動化的一個好辦法就是構(gòu)建一個價格追蹤器。由于這項任務(wù)生成的腳本可以立即投入使用,所以對于初學(xué)者來說尤為方便。本文將向大家介紹如何用 Python 采集器建立一個可立即實現(xiàn)電商價格監(jiān)控的可擴展價格追蹤器。 價格監(jiān)控的好處多多。對于您個人來說,通

    2023年04月24日
    瀏覽(23)
  • 利用scrapy框架對etherscan.io中給定Block范圍內(nèi)的交易信息的爬取

    利用scrapy框架對etherscan.io中給定Block范圍內(nèi)的交易信息的爬取

    一、 背景介紹 Etherscan 是 2015 年推出的一個以太坊區(qū)塊探索和分析的分布式智能合同平臺, 由于區(qū)塊鏈中的交易信息等數(shù)據(jù)都是公開透明的 , 而 Etherscan 作為探索以太坊的窗口, 用戶可以使用其查看自己的交易詳情以及以太坊中的任何信息。 我們都有過這樣的經(jīng)歷, 打開 taoba

    2024年02月12日
    瀏覽(23)
  • php如何爬取天貓和淘寶商品數(shù)據(jù)

    這篇文章主要介紹了php如何爬取天貓和淘寶商品數(shù)據(jù),具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。 一、思路 最近做了一個網(wǎng)站用到了從網(wǎng)址爬取天貓和淘寶的商品信息,首先看了下手機端的網(wǎng)

    2024年02月13日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包