上一個博文已經講述瞭如何使用selenium跳過webdriver檢測並爬取天貓商品數據,因此在此再也不詳細講,有須要思路的能夠查看另一篇博文。html
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from pyquery import PyQuery as pq from time import sleep import random #定義一個taobao類 class taobao_infos: #對象初始化 def __init__(self): url = 'https://login.taobao.com/member/login.jhtml' self.url = url options = webdriver.ChromeOptions() options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加載圖片,加快訪問速度 options.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步驟很重要,設置爲開發者模式,防止被各大網站識別出來使用了Selenium self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=options) self.wait = WebDriverWait(self.browser, 10) #超時時長爲10s #登陸淘寶 def login(self): # 打開網頁 self.browser.get(self.url) # 自適應等待,點擊密碼登陸選項 self.browser.implicitly_wait(30) #智能等待,直到網頁加載完畢,最長等待時間爲30s self.browser.find_element_by_xpath('//*[@class="forget-pwd J_Quick2Static"]').click() # 自適應等待,點擊微博登陸宣傳 self.browser.implicitly_wait(30) self.browser.find_element_by_xpath('//*[@class="weibo-login"]').click() # 自適應等待,輸入微博帳號 self.browser.implicitly_wait(30) self.browser.find_element_by_name('username').send_keys(weibo_username) # 自適應等待,輸入微博密碼 self.browser.implicitly_wait(30) self.browser.find_element_by_name('password').send_keys(weibo_password) # 自適應等待,點擊確認登陸按鈕 self.browser.implicitly_wait(30) self.browser.find_element_by_xpath('//*[@class="btn_tip"]/a/span').click() # 直到獲取到淘寶會員暱稱才能肯定是登陸成功 taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick '))) # 輸出淘寶暱稱 print(taobao_name.text) # 模擬向下滑動瀏覽 def swipe_down(self,second): for i in range(int(second/0.1)): #根據i的值,模擬上下滑動 if(i%2==0): js = "var q=document.documentElement.scrollTop=" + str(300+400*i) else: js = "var q=document.documentElement.scrollTop=" + str(200 * i) self.browser.execute_script(js) sleep(0.1) js = "var q=document.documentElement.scrollTop=100000" self.browser.execute_script(js) sleep(0.1) # 爬取淘寶 我已買到的寶貝商品數據 def crawl_good_buy_data(self): # 對我已買到的寶貝商品數據進行爬蟲 self.browser.get("https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm") # 遍歷全部頁數 for page in range(1,1000): # 等待該頁面所有已買到的寶貝商品數據加載完畢 good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#tp-bought-root > div.js-order-container'))) # 獲取本頁面源代碼 html = self.browser.page_source # pq模塊解析網頁源代碼 doc = pq(html) # # 存儲該頁已經買到的寶貝數據 good_items = doc('#tp-bought-root .js-order-container').items() # 遍歷該頁的全部寶貝 for item in good_items: good_time_and_id = item.find('.bought-wrapper-mod__head-info-cell___29cDO').text().replace('\n',"").replace('\r',"") good_merchant = item.find('.seller-mod__container___1w0Cx').text().replace('\n',"").replace('\r',"") good_name = item.find('.sol-mod__no-br___1PwLO').text().replace('\n', "").replace('\r', "") # 只列出商品購買時間、訂單號、商家名稱、商品名稱 # 其他的請本身實踐獲取 print(good_time_and_id, good_merchant, good_name) print('\n\n') # 大部分人被檢測爲機器人就是由於進一步模擬人工操做 # 模擬人工向下瀏覽商品,即進行模擬下滑操做,防止被識別出是機器人 # 隨機滑動延時時間 swipe_time = random.randint(1, 3) self.swipe_down(swipe_time) # 等待下一頁按鈕 出現 good_total = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.pagination-next'))) # 點擊下一頁按鈕 good_total.click() sleep(2) if __name__ == "__main__": # 使用以前請先查看當前目錄下的使用說明文件README.MD # 使用以前請先查看當前目錄下的使用說明文件README.MD # 使用以前請先查看當前目錄下的使用說明文件README.MD chromedriver_path = "/Users/bird/Desktop/chromedriver.exe" #改爲你的chromedriver的完整路徑地址 weibo_username = "改爲你的微博帳號" #改爲你的微博帳號 weibo_password = "改爲你的微博密碼" #改爲你的微博密碼 a = taobao_infos() a.login() #登陸 a.crawl_good_buy_data() #爬取淘寶 我已買到的寶貝商品數據
pip安裝下列包python
#改爲你的chromedriver的完整路徑地址 chromedriver_path = "/Users/bird/Desktop/chromedriver.exe" #改爲你的微博帳號 weibo_username = "改爲你的微博帳號" #改爲你的微博密碼 weibo_password = "改爲你的微博密碼"
爬蟲過程圖片查看不了點擊這裏
爬蟲結果圖片查看不了點擊這裏git
全部關於爬蟲的項目都放在github了,有須要的能夠去GitHub倉庫github
項目持續更新,歡迎您star本項目web