一? 目的
? 爬取NBA球星的數(shù)據(jù)并對數(shù)據(jù)進(jìn)行分析和統(tǒng)計。
二? 流程

三? 準(zhǔn)備工作
1 在pycharm中下載requests和lmxl庫(終端中輸入pip install requests 和pip install lmxl)。
2 在Edge的擴(kuò)展中下載xpath插件(圖1),用于后面代碼位置的確定。

四 網(wǎng)頁爬取
1? 首先打開虎撲進(jìn)入NBA球員排行榜,點擊F12進(jìn)入開發(fā)者模式,點擊Network,在Name中尋找players的文件,在Headers中找到Request URL(圖2)和User-Agent(圖3)(Request URL是告訴計算機(jī)要請求的網(wǎng)頁的地址,也就是你希望從中獲取信息的網(wǎng)站頁面的網(wǎng)址。User-Agent是對你訪問網(wǎng)站的設(shè)備的介紹,用于防止被網(wǎng)站發(fā)現(xiàn)我在爬蟲)。


2 打開pycharm寫代碼用于訪問網(wǎng)站(圖4),運(yùn)用了lmxl和requests庫。目的:lmxl庫的用途是處理HTML內(nèi)容,requests庫的用途是發(fā)送請求獲取響應(yīng)。
第2,3行是導(dǎo)入所需模塊
第6行是目標(biāo)網(wǎng)頁的URL
第9,10,11行構(gòu)造請求頭,模擬瀏覽器請求
第14行是發(fā)送HTTP GET請求,獲取網(wǎng)頁內(nèi)容

3 打開插件xpath,輸入//table,他會提取所有的信息但是有的信息我們不用,所以我們進(jìn)行篩選。(圖5)
右鍵點擊需要爬取的排名,會出現(xiàn)圖6。發(fā)現(xiàn)排名的位于players_table中因為排名在tr列的第一個td中,并且我們需要爬取的是文本。
所以對所有信息篩選的代碼為‘? //table[@class="players_table"]//tr/td[1]/text()? ’(圖7)



4 以此類推,剩下的信息就是第2 3 4列分別為姓名 球隊? 得分(圖8)。

5? 爬取數(shù)據(jù)。(圖9)
? nos = e.xpath('//table[@class="players_table"]//tr/td[1]/text()'):這行代碼使用XPath表達(dá)式來選取HTML文檔中所有class屬性為"players_table"的表格中每一行的第一個單元格中的文本內(nèi)容,并將結(jié)果存儲在名為nos的變量中。
? names = e.xpath('//table[@class="players_table"]//tr/td[2]/a/text()'):這行代碼使用XPath表達(dá)式來選取HTML文檔中所有class屬性為"players_table"的表格中每一行的第二個單元格中鏈接的文本內(nèi)容(通常是球員的姓名),并將結(jié)果存儲在名為names的變量中。
? teams = e.xpath('//table[@class="players_table"]//tr/td[3]/a/text()'):這行代碼使用XPath表達(dá)式來選取HTML文檔中所有class屬性為"players_table"的表格中每一行的第三個單元格中鏈接的文本內(nèi)容(通常是球員所屬球隊的信息),并將結(jié)果存儲在名為teams的變量中。
? scores = e.xpath('//table[@class="players_table"]//tr/td[4]/text()'):這行代碼使用XPath表達(dá)式來選取HTML文檔中所有class屬性為"players_table"的表格中每一行的第四個單元格中的文本內(nèi)容(通常是球員的得分信息),并將結(jié)果存儲在名為scores的變量中。

6? 因為此時提出的信息太亂(圖10),不規(guī)整。所以我們將讓提取的信息進(jìn)行美化。

代碼使用了 `zip()` 函數(shù),它可以將多個可迭代對象(例如列表)中的元素一一對應(yīng)地打包成元組的形式。在這里,`zip()` 函數(shù)同時迭代了四個列表 `nos`、`names`、`teams` 和 `scores`,將它們中對應(yīng)位置的元素打包成元組。然后,使用 `for` 循環(huán)遍歷這些元組,每次循環(huán)得到一個元組,元組中的元素分別表示某個球員的排名、姓名、球隊和得分。最后,通過 `print()` 函數(shù)打印了每個球員的排名、姓名、球隊和得分。(圖11)

6 輸出的結(jié)果。(圖12)
