爬取淘寶膝上型電腦資料(一)
阿新 • • 發佈:2020-10-10
爬取淘寶膝上型電腦資料
1.匯入模組
from selenium import webdriver
import time
import csv
import re
2.搜尋商品,獲取商品頁碼
def search_product(key_word): # 定位輸入框 browser.find_element_by_id("q").send_keys(key_word) # 定義點選按鈕,並點選 browser.find_element_by_class_name('btn-search').click() # 最大化視窗:為了方便我們掃碼 browser.maximize_window() # 等待15秒,給足時間我們掃碼 time.sleep(15) # 定位這個“頁碼”,獲取“共100頁這個文字” page_info = browser.find_element_by_xpath('//div[@class="total"]').text # 需要注意的是:findall()返回的是一個列表,雖然此時只有一個元素它也是一個列表。 page = re.findall("(\d+)",page_info)[0] return page
3.獲取商品資訊
def get_data(): # 通過頁面分析發現:所有的資訊都在items節點下 items = browser.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq "]') for item in items: # 引數資訊 pro_desc = item.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text # 價格 pro_price = item.find_element_by_xpath('.//strong').text # 付款人數 buy_num = item.find_element_by_xpath('.//div[@class="deal-cnt"]').text # 旗艦店 shop = item.find_element_by_xpath('.//div[@class="shop"]/a').text # 發貨地 address = item.find_element_by_xpath('.//div[@class="location"]').text #print(pro_desc, pro_price, buy_num, shop, address) with open('{}.csv'.format(key_word), mode='a', newline='', encoding='utf-8-sig') as f: csv_writer = csv.writer(f, delimiter=',') csv_writer.writerow([pro_desc, pro_price, buy_num, shop, address])
完整程式碼
from selenium import webdriver import time import csv import re # 搜尋商品,獲取商品頁碼 def search_product(key_word): # 定位輸入框 browser.find_element_by_id("q").send_keys(key_word) # 定義點選按鈕,並點選 browser.find_element_by_class_name('btn-search').click() # 最大化視窗:為了方便我們掃碼 browser.maximize_window() # 等待15秒,給足時間我們掃碼 time.sleep(15) # 定位這個“頁碼”,獲取“共100頁這個文字” page_info = browser.find_element_by_xpath('//div[@class="total"]').text # 需要注意的是:findall()返回的是一個列表,雖然此時只有一個元素它也是一個列表。 page = re.findall("(\d+)",page_info)[0] return page # 獲取資料 def get_data(): # 通過頁面分析發現:所有的資訊都在items節點下 items = browser.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq "]') for item in items: # 引數資訊 pro_desc = item.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text # 價格 pro_price = item.find_element_by_xpath('.//strong').text # 付款人數 buy_num = item.find_element_by_xpath('.//div[@class="deal-cnt"]').text # 旗艦店 shop = item.find_element_by_xpath('.//div[@class="shop"]/a').text # 發貨地 address = item.find_element_by_xpath('.//div[@class="location"]').text #print(pro_desc, pro_price, buy_num, shop, address) with open('{}.csv'.format(key_word), mode='a', newline='', encoding='utf-8-sig') as f: csv_writer = csv.writer(f, delimiter=',') csv_writer.writerow([pro_desc, pro_price, buy_num, shop, address]) def main(): #瀏覽器要獲取的連結 browser.get('https://www.taobao.com/') # 要獲取的關鍵字 page = search_product(key_word) print(page) get_data() page_num = 1 while int(page) != page_num: print("*" * 100) print("正在爬取第{}頁".format(page_num + 1)) browser.get('https://s.taobao.com/search?q={}&s={}'.format(key_word, page_num*44)) browser.implicitly_wait(15) get_data() page_num += 1 print("資料爬取完畢!") if __name__ == '__main__': key_word = input("請輸入你要搜尋的商品:") browser = webdriver.Chrome() main()