通過(guò)selenium獲取NBA官網(wǎng)球員前五頁(yè)的信息
使用工具及其安裝
- PyCharm
- Selenium:pip install selelnium -i https://pypi.douban.com/simple
- pandas:pip install pandas -i https://pypi.douban.com/simple
- BeautifulSoup: pip install beautifulsoup4
- 本例使用的是谷歌瀏覽器淮蜈,根據(jù)自己的版本選擇驅(qū)動(dòng)蔬咬。
基本步驟
- 導(dǎo)入相關(guān)的模塊和包,并創(chuàng)建Webdriver實(shí)例养渴,打開(kāi)網(wǎng)頁(yè)错邦,其官網(wǎng)網(wǎng)址:https://www.nba.com/stats/players/traditional/?sort=AGE&dir=-1
官網(wǎng)頁(yè)面:
結(jié)果截圖3.jpg
- 使用Beautifulsoup解析html頁(yè)面后獲取表格區(qū)域標(biāo)簽土榴,在調(diào)用pandas的read_html返回所有的表格數(shù)據(jù)列表荸哟,再將數(shù)據(jù)存為csv文件格式锦积。
- 使用selelnium模擬點(diǎn)擊下一頁(yè)的按鈕并調(diào)用click()芒帕。這里定義為爬取前五頁(yè)的信息。
具體實(shí)現(xiàn)代碼如下:
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time
#NBA官網(wǎng)
url='https://www.nba.com/stats/players/traditional/?sort=AGE&dir=-1'
driver=webdriver.Chrome("chromedriver.exe")
driver.implicitly_wait(10)
driver.get(url)#獲取頁(yè)面信息
#獲取每一頁(yè)的表格數(shù)據(jù)
page_num=1
pages_all=True
while pages_all:
soup=BeautifulSoup(driver.page_source,'lxml')
table=soup.select_one("div.nba-stat-table__overflow>table")
# print(table)
df=pd.read_html(str(table))
df[0].to_csv("all_players"+str(page_num)+".csv")
# driver.quit()
#定義選擇下一頁(yè)的數(shù)據(jù)
try:
next_page=driver.find_element_by_xpath('/html/body/main/div/div/div[2]/div/div/nba-stat-table/div[3]/div/div/a[2]')
next_page.click()
time.sleep(5)
if page_num<5:
page_num+=1
else:
pages_all=False
except Exception:
pages_all=False
結(jié)果截圖
-
生成的文件
結(jié)果截圖.jpg 文件內(nèi)容
結(jié)果截圖1.jpg