python自動化爬取淘寶商品數據導入execl表格

hello,大家好,我是夜鬥小神社!

電商時代,淘寶、京東、天貓商品數據對店鋪運營有極大的幫助,因此獲取相應店鋪商品的數據能夠帶來極大的價值,那麼我們如何獲取到相應的數據呢?

上一篇我們講了python打包exe可執行文件:
Python打包成exe文件史上最詳細教程:
https://blog.csdn.net/xtreallydance/article/details/112643658
這次我們來講解淘寶爬蟲代碼————代碼如下:


from selenium import webdriver
import time
import csv
import re

導入自動化的庫selenium, 緩存時間time庫, 將文件保存爲csv形式, 導入re正則匹配的庫

if __name__ == '__main__':
    keyword = input("請輸入你要商品的關鍵字:")
    path = r'L:\webdriver\chromedriver.exe'
    driver = webdriver.Chrome(path)
    driver.get('https://www.taobao.com/')
    main()

輸入查詢的關鍵字: 例如輸入ins潮流T恤,path爲webdriver.exe驅動設備存放的路徑,實例化一個driver對象,然後利用get方法訪問淘寶網址!再調用main()方法.

請大家記住,一定要掃碼登錄!不然會被淘寶反爬!如圖所示!

在這裏插入圖片描述

  • 程序運行開始結果如下:

在這裏插入圖片描述

def main():
    print('正在爬取第一頁數據')

    page = search_product(keyword)
    get_product()
    page_num = 1
    # q不變 0 44 188(頁數*44)
    while page_num != page:
        print('-*-' * 50 )
        print('正在爬取第{}頁的數據'.format(page_num + 1))
        print('*-*' * 50)
        driver.get('https://s.taobao.com/search?q={}&s={}'.format(keyword, page_num))
        # 瀏覽器等待方法
        driver.implicitly_wait(2)
        # 最大化瀏覽器
        driver.maximize_window()
        get_product()
        page_num += 1

main()方法當中呢,首先利用search_product函數與get_product函數爬取一頁的數據, 再利用while循環爬取全部數據, 我們首先講解一頁數據的爬取.

def search_product(key):
    driver.find_element_by_id('q').send_keys(key)
    driver.find_element_by_class_name('btn-search').click()
    # 瀏覽器窗口最大化
    driver.maximize_window()
    time.sleep(15)
    # 因爲自動登錄基本實現不了,所以要實現手動登錄
    # 找到頁數的標籤
    page = driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text
    page = re.findall('(\d+)', page)[0]
    return int(page)

首先利用driver.find_element_by_id這個方法找到輸入框,將key這個變量輸入到搜索框中,再利用driver.find_element_by_class_name方法找到搜索兩個字,利用click()方法點擊搜索.將窗口最大化,並暫停15s.因爲自動登錄淘寶當中會被阿里巴巴識別,所有暫停15s是爲了用手動掃碼登錄. 然後用用xapth找到page頁數的標籤,匹配數字獲取第一個值,返回page頁數,比如第5頁,返回的就是5,將參數傳入到page中,在調用get_product()方法獲取這一頁的商品詳細數據,例如商品名字、商品價格、付款人數、商品地址、商品店鋪名等等等,下面來看get_product()這個函數

在這裏插入圖片描述

def get_product():
    divs = driver.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq  "]')
    print(divs)
    for div in divs:
        # 商品名稱
        info = div.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text
        # 商品價格
        price = div.find_element_by_xpath('.//strong').text + "元"
        # 付款人數
        deal = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text
        # 店鋪名稱
        name = div.find_element_by_xpath('.//div[@class="shop"]/a').text
        # 店鋪地點
        place = div.find_element_by_xpath('.//div[@class="location"]').text
        print(info, price, deal, name, place, sep='|')
        with open('ins短袖.csv', 'a', newline="") as fp:
            csvwriter = csv.writer(fp, delimiter=',')
            csvwriter.writerow([info, price, deal, name, place])

首先找到商品列表的標籤divs,然後利用for循環獲取每一個商品的div標籤,利用xpath語法獲取到info、price、deal、name、place信息然後保存爲csv文件形式!

  • 最終爬取下來的數據導入到excel中,如圖所示:
    在這裏插入圖片描述

好啦今天的分享就到這裏啦,然後小夜鬥就要滾去學習啦,see you!

下面是小夜斗的公衆號, 喜歡的小夥伴可以關注一下哦!
在這裏插入圖片描述

  • 在這個星球上,你很重要,請珍惜你的珍貴! ~~~夜鬥小神社

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章