摘要:江山代有才人出各領(lǐng)風(fēng)騷數(shù)百年清趙翼論詩(shī)五首其二長(zhǎng)江后浪推前浪,浮事新人換舊人宋劉斧青瑣高議東西用時(shí)間長(zhǎng)了就該換新的了,特別是手機(jī),這幾年發(fā)展太快,是越來(lái)越大,內(nèi)存是越來(lái)越不夠用了,想要換新的手機(jī),但不知道換什么,那今天
江山代有才人出,各領(lǐng)風(fēng)騷數(shù)百年 ——清·趙翼 《論詩(shī)五首·其二》
長(zhǎng)江后浪推前浪,浮事新人換舊人 ——宋·劉斧《青瑣高議》
東西用時(shí)間長(zhǎng)了就該換新的了,特別是手機(jī),這幾年發(fā)展太快,APP是越來(lái)越大,內(nèi)存是越來(lái)越不夠用了,想要換新的手機(jī),但不知道換什么,那今天就爬一下淘寶,看一下淘寶手機(jī)的數(shù)據(jù),參考一下
我的開發(fā)環(huán)境:python3.8
計(jì)算機(jī)系統(tǒng):Windows10
開發(fā)工具:pycharm
要用的包:selenium、csv、time
網(wǎng)址:https://www.taobao.com/
今天用的是自動(dòng)化測(cè)試工具selenium,沒有這個(gè)包的同學(xué)可以用pip install selenium 來(lái)安裝
安裝完之后還需要安裝個(gè)瀏覽器驅(qū)動(dòng),我用的是谷歌瀏覽器
http://chromedriver.storage.googleapis.com/index.html
打開這個(gè)鏈接,找到你瀏覽器版本所對(duì)應(yīng)的驅(qū)動(dòng),這是我的瀏覽器版本
可以看到我的版本是94.0.4606.81 沒有找到一樣的就找低一個(gè)版本的
選擇對(duì)應(yīng)的系統(tǒng),我的是win系統(tǒng)
把下載的壓縮文件解壓后,放到python解釋器的當(dāng)前文件夾下
驗(yàn)證一下
from selenium.webdriver import Chromeweb = Chrome()web.get("https://www.baidu.com")
如果正常出現(xiàn)網(wǎng)頁(yè)就成功了,注意,一定要和你的版本相匹配,不然就會(huì)出現(xiàn)這樣
這個(gè)是我把瀏覽器更新之后驅(qū)動(dòng)版本太低不支持了
至于其他瀏覽器在這里就不做太多的敘述了,流程大體相同,至于網(wǎng)站可以在網(wǎng)上找一下,下面進(jìn)入正題
selenium是模擬人正常在瀏覽器上的操作,正常我們打開網(wǎng)頁(yè)在搜索框輸入內(nèi)容點(diǎn)擊搜索
import timeimport csvfrom selenium.webdriver import Chromedef main(): win.get("https://www.taobao.com/") win.find_element_by_xpath("http://*[@id="q"]").send_keys(commodity) # 點(diǎn)擊搜索框,輸入前面想要搜索的內(nèi)容 win.find_element_by_xpath("http://*[@id="J_TSearchForm"]/div[1]/button").click() # 點(diǎn)擊搜索按鈕 win.maximize_window() # 將網(wǎng)頁(yè)放大方便我們掃碼登錄 time.sleep(15) # 等待15秒 讓我們有時(shí)間掃碼if __name__ == "__main__": commodity = input("想要查詢的商品:") win = Chrome() main()
這里需要我們掃碼登錄才讓我們搜索
我們?cè)诜治鲆幌滤阉鹘缑?,發(fā)現(xiàn)所有的商品數(shù)據(jù)都放在div標(biāo)簽里,可以看到不是所有的div里都有商品數(shù)據(jù),是從第四個(gè)div開始有數(shù)據(jù),這些div都有共同的特征,那就是屬性都是一樣的,可以用xpath通過(guò)class定位進(jìn)行曬選
items = win.find_elements_by_xpath("http://div[@class="items"]/div[@class="item J_MouserOnverReq "]")
這里需要注意一點(diǎn)因?yàn)槲覀冞x取了許多個(gè)div,所以find_elements_by_xpath里的element一定要加s,這樣才返回列表,前面選取搜索框和搜索按鈕的時(shí)候是不加s的
將獲取的div遍歷取出我們想要數(shù)據(jù)
for item in items: # 旗艦店 store = item.find_element_by_xpath(".//div[@class="shop"]/a").text # 商品簡(jiǎn)述 desc = item.find_element_by_xpath("./div[2]/div[2]/a").text # 價(jià)格 price = item.find_element_by_xpath("./div[2]/div/div/strong").text # 人數(shù) num = item.find_element_by_xpath(".//div[@class="deal-cnt"]").text # 地址 address = item.find_element_by_xpath(".//div[@class="location"]").text
再將獲取的數(shù)據(jù)存儲(chǔ)到以搜索名稱命名的csv文件中
with open(f"{commodity}.csv", mode="a", newline="", encoding="utf-8-sig")as f: csv_writ = csv.writer(f, delimiter=",") csv_writ.writerow([store, desc, price, num, address])
附上結(jié)果
這次先這樣下次再將獲取到的數(shù)據(jù)進(jìn)行可視化生成柱狀圖、餅狀圖及地圖分布
全部代碼如下
import timeimport csvfrom selenium.webdriver import Chromedef get_data(): items = win.find_elements_by_xpath("http://div[@class="items"]/div[@class="item J_MouserOnverReq "]") for item in items: # 旗艦店 store = item.find_element_by_xpath(".//div[@class="shop"]/a").text # 商品簡(jiǎn)述 desc = item.find_element_by_xpath("./div[2]/div[2]/a").text # 價(jià)格 price = item.find_element_by_xpath("./div[2]/div/div/strong").text # 人數(shù) num = item.find_element_by_xpath(".//div[@class="deal-cnt"]").text # 地址 address = item.find_element_by_xpath(".//div[@class="location"]").text with open(f"{commodity}.csv", mode="a", newline="", encoding="utf-8-sig")as f: csv_writ = csv.writer(f, delimiter=",") csv_writ.writerow([store, desc, price, num, address])def main(): win.get("https://www.taobao.com/") win.find_element_by_xpath("http://*[@id="q"]").send_keys(commodity) # 點(diǎn)擊搜索框,輸入前面想要搜索的內(nèi)容 win.find_element_by_xpath("http://*[@id="J_TSearchForm"]/div[1]/button").click() # 點(diǎn)擊搜索按鈕 win.maximize_window() # 將網(wǎng)頁(yè)放大方便我們掃碼登錄 time.sleep(15) # 等待15秒 讓我們有時(shí)間掃碼 get_data()if __name__ == "__main__": commodity = input("想要查詢的商品:") win = Chrome() main()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/122484.html
摘要:簡(jiǎn)介上一個(gè)博文已經(jīng)講述了如何使用跳過(guò)檢測(cè)并爬取天貓商品數(shù)據(jù),所以在此不再詳細(xì)講,有需要思路的可以查看另外一篇博文。 簡(jiǎn)介 上一個(gè)博文已經(jīng)講述了如何使用selenium跳過(guò)webdriver檢測(cè)并爬取天貓商品數(shù)據(jù),所以在此不再詳細(xì)講,有需要思路的可以查看另外一篇博文。 源代碼 # -*- coding: utf-8 -*- from selenium import webdr...
摘要:基于此,我爬取了淘寶上多條月餅的銷售數(shù)據(jù),為大家展示了一幅漂亮的可視化大屏,解決大家心目中的問題。模塊的安裝與配置這次爬取淘寶,采用的是最簡(jiǎn)單的方式控制瀏覽器進(jìn)行自動(dòng)化操作,中途只需要掃碼登陸一次,即可完成整個(gè)數(shù)據(jù)的爬取。 ...
摘要:簡(jiǎn)介現(xiàn)在爬取淘寶,天貓商品數(shù)據(jù)都是需要首先進(jìn)行登錄的。把關(guān)鍵點(diǎn)放在如何爬取天貓商品數(shù)據(jù)上。是一款優(yōu)秀的自動(dòng)化測(cè)試工具,所以現(xiàn)在采用進(jìn)行半自動(dòng)化爬取數(shù)據(jù)。以開頭的在中表示類名,以開頭的在中表示名。 簡(jiǎn)介 現(xiàn)在爬取淘寶,天貓商品數(shù)據(jù)都是需要首先進(jìn)行登錄的。上一節(jié)我們已經(jīng)完成了模擬登錄淘寶的步驟,所以在此不詳細(xì)講如何模擬登錄淘寶。把關(guān)鍵點(diǎn)放在如何爬取天貓商品數(shù)據(jù)上。 過(guò)去我曾經(jīng)使用get/p...
摘要:是一款優(yōu)秀的自動(dòng)化測(cè)試工具,所以現(xiàn)在采用進(jìn)行半自動(dòng)化爬取數(shù)據(jù),支持模擬登錄淘寶和自動(dòng)處理滑動(dòng)驗(yàn)證碼。編寫思路由于現(xiàn)在大型網(wǎng)站對(duì)工具進(jìn)行檢測(cè),若檢測(cè)到,則判定為機(jī)器人,訪問被拒絕。以開頭的在中表示類名,以開頭的在中表示名。 簡(jiǎn)介 模擬登錄淘寶已經(jīng)不是一件新鮮的事情了,過(guò)去我曾經(jīng)使用get/post方式進(jìn)行爬蟲,同時(shí)也加入IP代理池進(jìn)行跳過(guò)檢驗(yàn),但隨著大型網(wǎng)站的升級(jí),采取該策略比較難實(shí)現(xiàn)了...
摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...
閱讀 3514·2023-04-25 20:09
閱讀 3720·2022-06-28 19:00
閱讀 3035·2022-06-28 19:00
閱讀 3058·2022-06-28 19:00
閱讀 3132·2022-06-28 19:00
閱讀 2859·2022-06-28 19:00
閱讀 3014·2022-06-28 19:00
閱讀 2610·2022-06-28 19:00