A级成人毛片免费视频高清,国产免费黄色片,a毛片视频一级毛片视频,绿色的电影,久青草大香蕉导航无删减完整在线观看 ,中文字幕无码亚洲字幕成a人

蜜途網(wǎng)

世界杯到了,寫個(gè)爬蟲獲取球員數(shù)據(jù)吧

來(lái)源:IT之家   時(shí)間:2022-11-25 17:32:06   閱讀量:7363   

標(biāo)題:世界杯開始了,大家重新燃起了看球的熱情對(duì)于游戲制作來(lái)說(shuō),往往需要開發(fā)一些角色數(shù)據(jù),尤其是體育游戲自己設(shè)置工作量太大,主觀性太強(qiáng)這時(shí)候你就需要去一些權(quán)威網(wǎng)站查數(shù)據(jù)做參考了我根據(jù)自己的實(shí)踐經(jīng)驗(yàn),教你做一個(gè)簡(jiǎn)單的爬蟲

一期準(zhǔn)備

我們單擊其中一個(gè)玩家進(jìn)行分析:

發(fā)現(xiàn)所需的所有數(shù)據(jù)都在上面兩張圖的位置下面是轉(zhuǎn)賬記錄和用戶評(píng)論,現(xiàn)在沒有

最后一個(gè)數(shù)字230006應(yīng)該是某種參數(shù)移除url后,播放器頁(yè)面仍會(huì)打開

移除玩家姓名后,您仍然可以打開頁(yè)面。

所以我們明白了—每個(gè)人的只是一個(gè)數(shù)字。

在這里,前期的重要準(zhǔn)備工作已經(jīng)完成我們找到了規(guī)則,我們需要在下一步中應(yīng)用它

開始做吧。

首先,編寫用于獲取玩家數(shù)據(jù)的最重要的函數(shù):

獲取頁(yè)面上的值

按F12查看頁(yè)面元素并獲取所需的值每個(gè)項(xiàng)目都不一樣,下面的展示就是我們需要的

元數(shù)據(jù)

有一段元數(shù)據(jù)沒有顯示在頁(yè)面上,其中記錄了玩家的描述我把這個(gè)記了下來(lái),以便與同名的球員進(jìn)行快速比較

過濾年份

因?yàn)橄氲玫阶钚碌腇IFA23數(shù)據(jù),所以過濾了左上角的年份如果不是23年,將返回空值

代碼到當(dāng)前位置:

獲取位置 生日 身高 體重等信息我們可以看到,這是一個(gè)字符串

這里用的是整篇文章,省腦的辦法是換選擇器右鍵單擊要爬網(wǎng)的部件,并選擇復(fù)制選擇器將其復(fù)制到剪貼板

#獲取小字信息raw data = soup . select gt,divgtdiv . col . col—12gt,div . bp3—card . player gt,divgtdiv ")

僅供參考:您也可以使用XPath進(jìn)行選擇,但是您需要學(xué)習(xí)一點(diǎn)XPath的語(yǔ)法Chrome有一個(gè)XPath Helper插件,可以輕松測(cè)試XPath的語(yǔ)法寫得是否正確

因?yàn)榍騿T可能有多個(gè)位置,我見過最多的人有四個(gè)位置所以我在下面的代碼里做了一個(gè)偏移量,確保截取的字符串部分是正確的

#如果有多個(gè)位置,則進(jìn)行翻譯,否則截取的字符串將是錯(cuò)誤的offset = raw data . find _ all( " span ")offset =(len(offset))—1 temp = raw data . text temp = re . split( ' s+ ',temp)ifoffsetgt,0:foriinrange(offset):temp . pop(I)生日信息和轉(zhuǎn)換

獲取生日信息,轉(zhuǎn)換成我們需要的格式日前,用excel打開后會(huì)自動(dòng)轉(zhuǎn)換成日期格式,麻煩死了我的做法是:要么用wps,要么用fly book打開,然后再貼回去如果你有更好的想法,請(qǐng)留言

這是身高和體重截取字符串非常簡(jiǎn)單

#獲取玩家的生日并轉(zhuǎn)換成所需格式Month = ( "Jan ", "Feb ", "Mar ", "Apr ", "May ", "Jun ", "Jul ", '+temp(4)(:—1)+ '— '+temp(5)(:—1)mon = temp(3)(1:)mon = Month . index(mon)+1 day = temp(4)(:—1)year = temp(5)(:—1)生日=(1

我們需要獲取頁(yè)面左側(cè)的簡(jiǎn)介信息,包括正反腳,技能等級(jí),攻防參與度等等。

左腳定義為1,右腳定義為2。這個(gè)神奇的數(shù)字存在于大量的項(xiàng)目中...而且只能微笑面對(duì):)

# Get profile raw data = soup . select( " # body gt,div:n—child(5)gt,divgtdiv . col . col—12gt,div:n—child(2)gt,divgtul")temp=rawdata(0)find_all('li ',class_= "省略號(hào)")preferred_foot=temp(0)contents(1)preferred _ foot = 1if(preferred _ foot ' Left ')else 2 my list . end(preferred _ foot)skill _ move _ level = temp(2)contents(0)my list . end(int(skill _ move _ level))信譽(yù)=temp(3)contents(0)my list . end(int(reputation))to dostr = temp(4)

可以看到,大部分代碼只是用來(lái)拆分 拼接字符串。

頭像

#頭像rawdata=soup.selectgt,divgt,div.col.col—12gt,div.bp3—card.playergt,img")img_url=rawdata(0).get("data—src")img_r=requests.get(img_url,stream=True)#print(img_r.status_code)img_name=f"id_playerName.png"withopen(f"X:/這里是路徑,每個(gè)人不一樣,我的不能給你們看/img_name","wb")asfi:forchunkinimg_r.iter_content(chunk_size=120):fi.write(chunk)# avatar raw data = soup . select gt,divgtdiv . col . col—12gt,div . bp3—card . player gt,img")img_url=rawdata(0)get( " data—src ")img _ r = requests . get(img _ URL,stream = True)# print(img _ r . status _ code)img _ name = f " id _ playername . png " with open(f " X:/以下是路徑每個(gè)人都不一樣我不能給你看我的

其他信息:

其他位置信息,俱樂部信息和國(guó)籍信息都使用相同的方法——在不能單擊的地方,只需右鍵單擊并復(fù)制一個(gè)選擇器。

# #獲取位置raw data = soup . select gt,divgtdiv . col . col—12gt,div . bp3—card . player gt,divgtdivgtspan")allPos=' 'join(f " p . text " for pinrawdata)my list . end(all pos)raw data = soup . select( " # body gt,div:n—child(6)gt,divgtdiv . col . col—4gt,ulgt李:第n子(1)gt,Span ") bestpos = rawdata (0)text my list . end(bestpos)# Get Club raw data = soup . select gt,divgtdiv . col . col—12gt,div:n—child(4)gt,divgth5gta")club=rawdata(0)text iflen(rawdata)gt,0else "沒有俱樂部"myList.end(club)#獲得國(guó)籍raw data = soup . select gt,divgtdiv . col . col—12gt,div . bp3—card . player gt,divgtdivgta")nation=rawdata(0)

精彩來(lái)了這七八十個(gè)屬性手動(dòng)復(fù)制最麻煩所以我寫了這個(gè)爬蟲

發(fā)現(xiàn)每個(gè)屬性的值也寫在類名里,比如這個(gè)class=bp3—tag p p—73共性是bp3—tag p的部分,所以需要使用正則表達(dá)式

只是,最后把屬性以列表的形式返回,爬蟲的主要功能就完成了。

在開始下一步之前,完成編寫的函數(shù)否則來(lái)之不易的數(shù)據(jù)只存在內(nèi)存中,很容易丟失很多非程序員可能不理解,這個(gè)過程叫做堅(jiān)持俗話說(shuō)不爭(zhēng)長(zhǎng)短,只爭(zhēng)堅(jiān)持,就是代碼的意思

建議寫Csv,其他格式也一樣如果想寫excel,推薦openpyxl庫(kù)下面是代碼部分,最長(zhǎng)的是表格的表頭

#編寫文件DefDealwithData:header _ list =( ' id ',' name ',' birthday ',' height ',' preferred _ foot ', "skill _ ","wr_def ','Positions ','BestPosition ','Club ', ' nation ','Crossing ','Finishing ','HeadingAccuracy ','ShortPassing ','Volleys ', '/中文名。csv ',' a+ ',encoding = ' UTF—8—SIG ',newline = ' ')ASF:writer = CSV . writer(f)writer . writerow(header _ list)

另外,請(qǐng)搜索一下w,a和+幾種書寫方式的用法。

搜索id

怎么調(diào)用上面的函數(shù)所需玩家id從何而來(lái)

增量ID

第一次用id遞增的方式穿越,屬于廣撒網(wǎng)多聚魚的方式這個(gè)方法非常簡(jiǎn)潔通過這個(gè)搜索,很多球員的數(shù)據(jù),比如女足球員的數(shù)據(jù),就不會(huì)顯示在網(wǎng)站頁(yè)面上了

#不再使用實(shí)際代碼。我這里寫個(gè)例子:so data = forsinrange (20000,40000): l = fetchdata (s) ifl!= None:so data . end(l)deallowithdata(so data)

如果用這種方式去搜索和寫一個(gè)條目,效率是很差的可以批量搜索,比如一次100條,然后整體寫寫CSV的時(shí)候可以注釋掉header_list,這樣就不需要寫那么多次頭了

Id列表

我們用一個(gè)csv文件,加上要搜索的id,然后讀取列表進(jìn)行針對(duì)性搜索!

# Search List Search List = with open( '/目錄自己看/IDCSV ', "R ",編碼= ' UTF—8—SIG ') ASF: F _ CSV = CSV

就是這樣我們需要得到玩家索非亞網(wǎng)站的id在這里,我按名字搜索過,按ovr搜索過,按俱樂部搜索過,下面列出來(lái)

按玩家姓名搜索

在我們的網(wǎng)站上,通過名字搜索,會(huì)出現(xiàn)一個(gè)球員名單。例如,搜索華倫天奴會(huì)顯示以下玩家:

話不多說(shuō),直接上碼:

這個(gè)函數(shù)將得到所有的搜索結(jié)果如果沒有,它將返回未找到需要注意的是,會(huì)搜索到很多名字相似的玩家至于你真正需要的是哪一個(gè),需要你自己去篩選

同樣,把要搜索的名字放在csv中,方便使用。

#讀列表搜索Search list = with open( ' to Search by name . CSV ', "r ",encoding = ' UTF—8—SIG ')ASF:F _ CSV = CSV . reader(F,dial = ' excel ',分隔符)Search list . extend(ITER(F _ CSV))# Search,注意會(huì)搜索出所有同名球員。idata = ForpinSearchlist:keyword = str(p)(2:len(p)—3)L = get playerid(keyword)IFL!= none:idata . end(l)deallowithdata(idata)由OVR搜索

按玩家總屬性值搜索。

代碼如下:

如果你搜索一個(gè)團(tuán)隊(duì),你需要知道俱樂部的id如果我們選擇球隊(duì),你可以看到它獨(dú)特的俱樂部id和首發(fā)陣容

以下是通過俱樂部id獲取首發(fā)陣容的方法:

至于如何獲取俱樂部id,和前面的球員一樣,或者用遞增id記錄,或者搜索隊(duì)名,這里就不贅述了。

摘要

俗話說(shuō),人生苦短我用python作為一種腳本語(yǔ)言,速度和簡(jiǎn)單是python最大的特點(diǎn)可以根據(jù)自己的需求定制這種爬蟲對(duì)于更高級(jí)的爬蟲框架,可以使用scappy等對(duì)于常用的工具功能,比如寫csv,寫 讀excel等,你可以根據(jù)自己的需要把它們寫在一個(gè)misc.py里其實(shí)因?yàn)榭傆行碌囊螅詫懙暮茈S便,很多評(píng)論都沒寫這樣沒有美感新的需求接踵而至,根本沒時(shí)間重構(gòu)我感謝它能跑跑完之后看到用秒退出這句話就再也不想打開了希望大家以此為戒,寫出通俗易懂的代碼

聲明:本網(wǎng)轉(zhuǎn)發(fā)此文章,旨在為讀者提供更多信息資訊,所涉內(nèi)容不構(gòu)成投資、消費(fèi)建議。文章事實(shí)如有疑問,請(qǐng)與有關(guān)方核實(shí),文章觀點(diǎn)非本網(wǎng)觀點(diǎn),僅供讀者參考。

猜你喜歡

游客在進(jìn)入北京環(huán)球度假區(qū)時(shí)須核驗(yàn)北京健康寶和有效身份證件
游客在進(jìn)入北京環(huán)球度假區(qū)時(shí)須核驗(yàn)北京健康

具體如下:北京環(huán)球度假區(qū)繼續(xù)按照相關(guān)政府部門的限流要求,以預(yù)約入園的形式加強(qiáng)人流動(dòng)態(tài)監(jiān)測(cè)和...詳情

2022-04-28
杭州湘湖的草坪人氣很高不少人在這里搭帳篷
杭州湘湖的草坪人氣很高不少人在這里搭帳篷

湘湖邊亂搭帳篷,煞了春日風(fēng)景景區(qū)出臺(tái)最新政策,將設(shè)置臨時(shí)帳篷搭建區(qū),后續(xù)還要增設(shè)露營(yíng)服務(wù)區(qū)...詳情

2022-04-14
南非徐霞客在云南:從行萬(wàn)里路到吃百碗米線的文化之旅
南非徐霞客在云南:從行萬(wàn)里路到吃百碗米線

題:南非徐霞客在云南:從行萬(wàn)里路到吃百碗米線的文化之旅杜安睿來(lái)自南非,是一名國(guó)際注冊(cè)會(huì)計(jì)師...詳情

2022-04-10
廣州新增3例本土確診病例雙層觀光巴士全部停運(yùn)
廣州新增3例本土確診病例雙層觀光巴士全部

廣州新增3例本土確診病例雙層觀光巴士全部停運(yùn)廣州市政府新聞辦公室21日公布的信息顯示,過去...詳情

2022-03-22