摘要:完整代碼火狐瀏覽器驅動下載鏈接提取碼雙十一剛過,想著某寶的信息看起來有些少很難做出購買決定。
完整代碼&火狐瀏覽器驅動下載鏈接:https://pan.baidu.com/s/1pc8HnHNY8BvZLvNOdHwHBw 提取碼:4c08
雙十一剛過,想著某寶的信息看起來有些少很難做出購買決定。于是就有了下面的設計:?
既然有了想法那就趕緊說干就干趁著雙十二還沒到
一、準備工作:
安裝 :selenium 和 tkinter
pip install selenium
pip install tkinter
下載火狐瀏覽器驅動
二、網站分析
發現web端如果不登錄就不能進行查找商品
登錄后查找口紅
發現url竟然張這樣
https://s.taobao.com/search?q=口紅&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20211117&ie=utf8&bcoffset=1&ntoffset=1&p4ppushleft=2%2C48&s=44
通過觀察發現url中的q=**表示的是搜索的內容 s=**表示頁數
接下來確定網頁中我們將要采集的數據
采集的數據有:商品價格;付款人數;商品標題;店鋪url;店家地址;
三、代碼編寫
1、類庫引用
import jsonimport pandas as pdfrom selenium import webdriverimport timefrom tkinter import *import tkinter.messagebox
2、窗口化代碼實現
# 設置窗口window = Tk()window.title(qcc_nw0.1)# 設置窗口大小window.geometry(500x200)# lable標簽l = Label(window, text=如何真正逛淘寶??!, bg=green, fg=white, font=(Arial, 12), width=30, height=2)l.pack()# 輸入要查詢的寶貝的文本框E1 = Text(window,width=100,height=2)E1.pack()def get_cookie():passdef get_data():pass# cookie獲取按鈕cookie = Button(window, text=cookie獲取, font=(Arial, 10), width=15, height=1,ommand=get_cookie)# 數據開按鈕data = Button(window, text=數據獲取, font=(Arial, 10), width=15, height=1,ommand=get_data)cookie.pack(anchor=nw)data.pack(anchor=nw)window.mainloop()
3、免登陸功能實現
對已經登錄網站的cookie獲取
def get_cookie():# 新建瀏覽器dirver = webdriver.Firefox()dirver.get(https://login.taobao.com/member/login.jhtml?redirectURL=http%3A%2F%2Fbuyertrade.taobao.com%2Ftrade%2Fitemlist%2Flist_bought_items.htm%3Fspm%3D875.7931836%252FB.a2226mz.4.66144265Vdg7d5%26t%3D20110530)# 設置登錄延時獲取cookietime.sleep(20)# 直接用手機掃碼登陸淘寶即可獲取dictCookies = dirver.get_cookies()# 登錄完成后,將cookies保存到本地文件jsonCookies = json.dumps(dictCookies)with open("cookies_tao.json", "w") as fp:fp.write(jsonCookies)
讀取獲取后的cookie實現登錄效果:
1)先對selenium使用的模擬瀏覽器進行下偽裝設置否則會被檢測
def get_data():options = webdriver.FirefoxOptions()profile = webdriver.FirefoxProfile()ua = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36profile.set_preference(general.useragent.override, ua)#UA偽裝profile.set_preference("dom.webdriver.enabled", False) # 設置非driver驅動profile.set_preference(useAutomationExtension, False) # 關閉自動化提示profile.update_preferences() # 更新設置browser = webdriver.Firefox(firefox_profile=profile, firefox_options=options)
2)讀取獲取到的cookie實現免登陸
# 刪除原有的cookiebrowser.delete_all_cookies()with open(cookies_tao.json, encoding=utf-8) as f:listCookies = json.loads(f.read())# cookie 讀取發送for cookie in listCookies:# print(cookie)browser.add_cookie({domain: .taobao.com, # 此處xxx.com前,需要帶點name: cookie[name],value: cookie[value],path: /,expires: None})
4、解析網頁進行數據獲取
# 獲取輸入框中的信息thing =E1.get(1.0,end)# 設置將要采集的URL地址url= "https://s.taobao.com/search?q=%s"# 設置采集的商品名稱browser.get(url%thing)# 窗口最小化browser.minimize_window()# 獲取商品總頁數page_count = browser.find_element_by_xpath(/html/body/div[1]/div[2]/div[3]/div[1]/div[26]/div/div/div/div[1]).textpage_count = int(page_count.split( )[1])# 設置接收字典dic = {real_title:[],price:[],payment_num:[],provide:[],city:[],shop_name:[],shop_url:[]}# 循環翻頁設置for i in range(page_count):page = i*44browser.get(url%thing + &s=%d%page)div_list = browser.find_elements_by_xpath(//div[@class="ctx-box J_MouseEneterLeave J_IconMoreNew"])# 循環遍歷商品信息for divs in div_list:# 商品標題獲取real_title = divs.find_element_by_xpath(.//div[@class="row row-2 title"]/a).text# 商品價格獲取price = divs.find_element_by_xpath(.//div[@class="price g_price g_price-highlight"]/strong).text# 商品付款人數獲取payment_num = divs.find_element_by_xpath(.//div[@class="deal-cnt"]).text# 店家地址獲取location = divs.find_element_by_xpath(.//div[@class="row row-3 g-clearfix"]/div[@class="location"]).text# 店家名稱獲取shop_name = divs.find_element_by_xpath(.//div[@class="row row-3 g-clearfix"]/div[@class="shop"]/a/span).text# 店家URL獲取shop_url = divs.find_element_by_xpath(.//div[@class="row row-3 g-clearfix"]/div[@class="shop"]/a).get_attribute(href)# 判斷地址是否為自治區或直轄市if len(location.split( ))>1:provide=location.split( )[0]city=location.split( )[1]else:provide=location.split( )[0]city = location.split( )[0]# 將采集的數據添加至字典中dic[real_title].append(real_title)dic[price].append(price)dic[payment_num].append(payment_num.replace(+人付款,))dic[provide].append(provide)dic[city].append(city)dic[shop_name].append(shop_name)dic[shop_url].append(shop_url)print(real_title,price,payment_num.replace(+人付款,),provide,city,shop_name,shop_url)# 使用pandas將獲取的數據寫入csv文件持久化存儲df=pd.DataFrame(dic)df.to_csv(C:/Users/admin/Desktop/+thing.strip(/n)+.csv)browser.close()
截止至此基本完成
發現這樣的數據寫入是不會保存的所以要添加一個提示框來終止get_data函數的運行
def warning():# 彈出對話框result = tkinter.messagebox.showinfo(title = success!,message=主人!數據獲取完成)# 返回值為:ok
在get_data函數中嵌套warning函數.
-----完活下班!?。?!-----
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123769.html
摘要:且本小白也親身經歷了整個從小白到爬蟲初入門的過程,因此就斗膽在上開一個欄目,以我的圖片爬蟲全實現過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應對更大多數的爬蟲實際問題。 前言: 一個月前,博主在學過python(一年前)、會一點網絡(能按F12)的情況下,憑著熱血和興趣,開始了pyth...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅動瀏覽器獲得的解析的能力。所以說這貨在動態爬取方面簡直是掛逼級別的存在,相較于手動分析更簡單易用,節省分析打碼時間。一旦設置了隱式等待時間,它的作用范圍就是對象實例的整個生命周期。 selenium——自動化測試工具,專門為Web應用程序編寫的一個驗收測試工具,測試其兼容性,功能什么的。然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅動瀏...
摘要:是一款優秀的自動化測試工具,所以現在采用進行半自動化爬取數據,支持模擬登錄淘寶和自動處理滑動驗證碼。編寫思路由于現在大型網站對工具進行檢測,若檢測到,則判定為機器人,訪問被拒絕。以開頭的在中表示類名,以開頭的在中表示名。 簡介 模擬登錄淘寶已經不是一件新鮮的事情了,過去我曾經使用get/post方式進行爬蟲,同時也加入IP代理池進行跳過檢驗,但隨著大型網站的升級,采取該策略比較難實現了...
摘要:簡介現在爬取淘寶,天貓商品數據都是需要首先進行登錄的。把關鍵點放在如何爬取天貓商品數據上。是一款優秀的自動化測試工具,所以現在采用進行半自動化爬取數據。以開頭的在中表示類名,以開頭的在中表示名。 簡介 現在爬取淘寶,天貓商品數據都是需要首先進行登錄的。上一節我們已經完成了模擬登錄淘寶的步驟,所以在此不詳細講如何模擬登錄淘寶。把關鍵點放在如何爬取天貓商品數據上。 過去我曾經使用get/p...
閱讀 724·2023-04-25 19:43
閱讀 3921·2021-11-30 14:52
閱讀 3794·2021-11-30 14:52
閱讀 3859·2021-11-29 11:00
閱讀 3790·2021-11-29 11:00
閱讀 3882·2021-11-29 11:00
閱讀 3562·2021-11-29 11:00
閱讀 6138·2021-11-29 11:00