兄弟們,雙十一剁手了嗎?購物雖快樂,但是別過度了,畢竟很多降價不是真的降價,眼睛擦亮了~
今天來試試爬一下某寶,這玩意學會了做外包的話,還是值幾個錢的。
環境/模塊介紹
python 3.8 使用的環境
pycharm 使用的編輯器
selenium 瀏覽器驅動的第三方模塊
csv 數據保存的模塊
time 時間模塊, 可以用於程序的延遲
random 隨機數模塊
#兄弟們學習python,有時候不知道怎么學,從哪里開始學。掌握了基本的一些語法或者做了兩個案例后,不知道下一步怎么走,不知道如何去學習更加高深的知識。 #那么對於這些大兄弟們,我准備了大量的免費視頻教程,PDF電子書籍,以及視頻源的源代碼! #還會有大佬解答! #都在這個群里了 872937351 #歡迎加入,一起討論 一起學習!
下載操作瀏覽器驅動的第三方模塊
selenium pip install selenium
解釋我基本都寫在注釋了,我就偷個懶不在寫了。
from selenium import webdriver import time # 時間模塊, 可以用於程序的延遲 import random # 隨機數模塊 from constants import TAO_USERNAME1, TAO_PASSWORD1 import csv # 數據保存的模塊
def search_product(keyword): """搜索商品數據, 登錄用戶""" driver.find_element_by_xpath('//*[@id="q"]').send_keys(keyword) time.sleep(random.randint(1, 3)) # 盡量避免人機檢測 隨機延遲 driver.f def parse_data(): """解析商品數據""" divs = driver.find_elements_by_xpath('//div[@class="grid g-clearfx"]/div/div') # 所有的div標簽 for div in divs: try: 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/span[2]').text location = div.find_element_by_xpath('.//div[@class="location"]').te'.//div[@class="pic"]/a').get_attribute('href') print(info, price, deal, name, location, detail_url) # 保存 with open('某寶.csv', mode='a', encoding='utf-8', newline='') as f: csv_write = csv.writer(f) csv_write.writerow([info, price, deal, name, location, detail_url]) except: continue
word = input('請輸入你要搜索商品的關鍵字:') # 創建一個瀏覽器 driver = webdriver.Chrome() # selenium操作的瀏覽器被識別了, 無法登錄 # 修改瀏覽器的部分屬性, 繞過檢測 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => false})"""}) # 執行自動化瀏覽器的操作 driver.get('https://www.taobao.com/') driver.implicitly_wait(10) # 設置瀏覽器的等待,加載數據 driver.maximize_window() # 最大化瀏覽器 # 調用商品搜索的函數 search_product(word) for page in range(100): # 012 print(f'\n==================正在抓取第{page + 1}頁數據====================') url = f'https://s.taobao.com/search?q=%E5%B7%B4%E9%BB%8E%E4%B8%96%E5%AE%B6&s={page * 44}' # 解析商品數據 parse_data() time.sleep(random.randint(1, 3)) # 盡量避免人機檢測 隨機延遲