先看一下代碼,真的只是五十行:
1 # coding=gbk 2 3 from selenium import webdriver 4 import time 5 6 options = webdriver.ChromeOptions() 7 options.add_argument(r'--user-data-dir=C:\Users\lwy\AppData\Local\Google\Chrome\User Data\Default') 8 options.add_experimental_option('excludeSwitches', ['enable-automation']) 9 driver = webdriver.Chrome(options=options) 10 driver.get('https://www.taobao.com/') 11 12 13 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36', 14 'Referer': 'https://www.taobao.com/'} 15 16 17 def request_page(): 18 driver.find_element_by_xpath('//*[@id="q"]').send_keys('男裝') 19 time.sleep(3) 20 driver.find_element_by_xpath('//*[@id="J_TSearchForm"]/div[1]/button').click() 21 time.sleep(5) 22 # 控制頁數 23 for i in range(5): 24 # 獲取每頁存放所有商品的div 25 all_thing_div = driver.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]') 26 # 獲取每個商品的div列表 27 thing_div_list = all_thing_div.find_elements_by_xpath('./div') 28 # 依次獲取每個商品的信息 29 for thing_div in thing_div_list: 30 info_div_list = thing_div.find_element_by_css_selector('.ctx-box').find_elements_by_xpath( 31 './div') # 獲取每個商品下面信息的4個div 32 price = info_div_list[0].find_element_by_xpath('./div[1]/strong').text # 單價 33 customer = info_div_list[0].find_element_by_xpath('./div[@class="deal-cnt"]').text # 購買數量 34 thing_name = info_div_list[1].find_element_by_xpath('./a').text 35 thing_lianjie = info_div_list[1].find_element_by_xpath('./a').get_attribute('href') 36 store_name = info_div_list[2].find_element_by_xpath('./div[1]/a/span[2]').text 37 store_where = info_div_list[2].find_element_by_xpath('./div[2]').text 38 print("單價:", price, "購買數量:", customer, '商品名稱:', thing_name, '店鋪名稱:', store_name, '店鋪所在地', store_where, 39 '鏈接:', thing_lianjie) 40 print('第{0}頁爬取完成'.format(i+1)) 41 if i+1 == 5: 42 break 43 driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/ul/li[8]/a/span[1]').click() 44 time.sleep(10) 45 46 47 if __name__ == '__main__': 48 request_page() 49 driver.close()
第七行用來加載chrome的配置文件,需要改成自己的路徑,可以再chrome的地址欄里輸入chrome://version查看,第八行用來繞過淘寶對selenium的檢測,request_page是自定義的爬蟲函數,主要是利用xpath語法,真的不要太方便,第一個for循環用來控制爬取的頁數,第二個for循環用來爬取每一個商品。
(ps:還是正在努力的小菜雞,希望大佬執教,,xixiiixi。。。。)
**********不積跬步無以至千里**********