成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

selenium實(shí)戰(zhàn):窗口化爬取*寶數(shù)據(jù)(附源碼鏈接)

番茄西紅柿 / 3107人閱讀

摘要:完整代碼火狐瀏覽器驅(qū)動下載鏈接提取碼雙十一剛過,想著某寶的信息看起來有些少很難做出購買決定。

完整代碼&火狐瀏覽器驅(qū)動下載鏈接:https://pan.baidu.com/s/1pc8HnHNY8BvZLvNOdHwHBw 提取碼:4c08

雙十一剛過,想著某寶的信息看起來有些少很難做出購買決定。于是就有了下面的設(shè)計(jì):?

 


既然有了想法那就趕緊說干就干趁著雙十二還沒到

 

 

 

 

 

 

一、準(zhǔn)備工作:
安裝 :selenium 和 tkinter

pip install selenium

pip install tkinter

下載火狐瀏覽器驅(qū)動

二、網(wǎng)站分析
發(fā)現(xiàn)web端如果不登錄就不能進(jìn)行查找商品

 

 

登錄后查找口紅

發(fā)現(xiàn)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

通過觀察發(fā)現(xiàn)url中的q=**表示的是搜索的內(nèi)容 s=**表示頁數(shù)

接下來確定網(wǎng)頁中我們將要采集的數(shù)據(jù)

 

 

 

 

采集的數(shù)據(jù)有:商品價格;付款人數(shù);商品標(biāo)題;店鋪url;店家地址;

三、代碼編寫
1、類庫引用

import jsonimport pandas as pdfrom selenium import webdriverimport timefrom tkinter import *import tkinter.messagebox


2、窗口化代碼實(shí)現(xiàn)

# 設(shè)置窗口window = Tk()window.title(qcc_nw0.1)# 設(shè)置窗口大小window.geometry(500x200)# lable標(biāo)簽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)# 數(shù)據(jù)開按鈕data = Button(window, text=數(shù)據(jù)獲取, font=(Arial, 10), width=15, height=1,ommand=get_data)cookie.pack(anchor=nw)data.pack(anchor=nw)window.mainloop()

 

 

 

 

 

3、免登陸功能實(shí)現(xiàn)
對已經(jīng)登錄網(wǎng)站的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)# 設(shè)置登錄延時獲取cookietime.sleep(20)# 直接用手機(jī)掃碼登陸淘寶即可獲取dictCookies = dirver.get_cookies()# 登錄完成后,將cookies保存到本地文件jsonCookies = json.dumps(dictCookies)with open("cookies_tao.json", "w") as fp:fp.write(jsonCookies)

讀取獲取后的cookie實(shí)現(xiàn)登錄效果:

1)先對selenium使用的模擬瀏覽器進(jìn)行下偽裝設(shè)置否則會被檢測

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) # 設(shè)置非driver驅(qū)動profile.set_preference(useAutomationExtension, False) # 關(guān)閉自動化提示profile.update_preferences() # 更新設(shè)置browser = webdriver.Firefox(firefox_profile=profile, firefox_options=options)


2)讀取獲取到的cookie實(shí)現(xiàn)免登陸

# 刪除原有的cookiebrowser.delete_all_cookies()with open(cookies_tao.json, encoding=utf-8) as f:listCookies = json.loads(f.read())# cookie 讀取發(fā)送for cookie in listCookies:# print(cookie)browser.add_cookie({domain: .taobao.com, # 此處xxx.com前,需要帶點(diǎn)name: cookie[name],value: cookie[value],path: /,expires: None})

4、解析網(wǎng)頁進(jìn)行數(shù)據(jù)獲取

# 獲取輸入框中的信息thing =E1.get(1.0,end)# 設(shè)置將要采集的URL地址url= "https://s.taobao.com/search?q=%s"# 設(shè)置采集的商品名稱browser.get(url%thing)# 窗口最小化browser.minimize_window()# 獲取商品總頁數(shù)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])# 設(shè)置接收字典dic = {real_title:[],price:[],payment_num:[],provide:[],city:[],shop_name:[],shop_url:[]}# 循環(huán)翻頁設(shè)置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"])# 循環(huán)遍歷商品信息for divs in div_list:# 商品標(biāo)題獲取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# 商品付款人數(shù)獲取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)# 判斷地址是否為自治區(qū)或直轄市if len(location.split( ))>1:provide=location.split( )[0]city=location.split( )[1]else:provide=location.split( )[0]city = location.split( )[0]# 將采集的數(shù)據(jù)添加至字典中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將獲取的數(shù)據(jù)寫入csv文件持久化存儲df=pd.DataFrame(dic)df.to_csv(C:/Users/admin/Desktop/+thing.strip(/n)+.csv)browser.close()

截止至此基本完成

發(fā)現(xiàn)這樣的數(shù)據(jù)寫入是不會保存的所以要添加一個提示框來終止get_data函數(shù)的運(yùn)行

def warning():# 彈出對話框result = tkinter.messagebox.showinfo(title = success!,message=主人!數(shù)據(jù)獲取完成)# 返回值為:ok

在get_data函數(shù)中嵌套warning函數(shù).

-----完活下班?。。?!-----

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/123769.html

相關(guān)文章

  • 【小白+python+selenium庫+圖片爬取+反爬+資料】超詳細(xì)新手實(shí)現(xiàn)(01)webdriv

    摘要:且本小白也親身經(jīng)歷了整個從小白到爬蟲初入門的過程,因此就斗膽在上開一個欄目,以我的圖片爬蟲全實(shí)現(xiàn)過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應(yīng)對更大多數(shù)的爬蟲實(shí)際問題。 前言: 一個月前,博主在學(xué)過python(一年前)、會一點(diǎn)網(wǎng)絡(luò)(能按F12)的情況下,憑著熱血和興趣,開始了pyth...

    Half 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • Python 從零開始爬蟲(八)——動態(tài)爬取解決方案 之 selenium

    摘要:然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅(qū)動瀏覽器獲得的解析的能力。所以說這貨在動態(tài)爬取方面簡直是掛逼級別的存在,相較于手動分析更簡單易用,節(jié)省分析打碼時間。一旦設(shè)置了隱式等待時間,它的作用范圍就是對象實(shí)例的整個生命周期。 selenium——自動化測試工具,專門為Web應(yīng)用程序編寫的一個驗(yàn)收測試工具,測試其兼容性,功能什么的。然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅(qū)動瀏...

    fobnn 評論0 收藏0
  • selenium跳過webdriver檢測并模擬登錄淘

    摘要:是一款優(yōu)秀的自動化測試工具,所以現(xiàn)在采用進(jìn)行半自動化爬取數(shù)據(jù),支持模擬登錄淘寶和自動處理滑動驗(yàn)證碼。編寫思路由于現(xiàn)在大型網(wǎng)站對工具進(jìn)行檢測,若檢測到,則判定為機(jī)器人,訪問被拒絕。以開頭的在中表示類名,以開頭的在中表示名。 簡介 模擬登錄淘寶已經(jīng)不是一件新鮮的事情了,過去我曾經(jīng)使用get/post方式進(jìn)行爬蟲,同時也加入IP代理池進(jìn)行跳過檢驗(yàn),但隨著大型網(wǎng)站的升級,采取該策略比較難實(shí)現(xiàn)了...

    tulayang 評論0 收藏0
  • selenium跳過webdriver檢測并爬取天貓商品數(shù)據(jù)

    摘要:簡介現(xiàn)在爬取淘寶,天貓商品數(shù)據(jù)都是需要首先進(jìn)行登錄的。把關(guān)鍵點(diǎn)放在如何爬取天貓商品數(shù)據(jù)上。是一款優(yōu)秀的自動化測試工具,所以現(xiàn)在采用進(jìn)行半自動化爬取數(shù)據(jù)。以開頭的在中表示類名,以開頭的在中表示名。 簡介 現(xiàn)在爬取淘寶,天貓商品數(shù)據(jù)都是需要首先進(jìn)行登錄的。上一節(jié)我們已經(jīng)完成了模擬登錄淘寶的步驟,所以在此不詳細(xì)講如何模擬登錄淘寶。把關(guān)鍵點(diǎn)放在如何爬取天貓商品數(shù)據(jù)上。 過去我曾經(jīng)使用get/p...

    codecook 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<