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!
下面是小夜斗的公衆號, 喜歡的小夥伴可以關注一下哦!
- 在這個星球上,你很重要,請珍惜你的珍貴! ~~~夜鬥小神社