Web Scrape NBA Player Stats in 5 Steps

Jason Gong
July 2, 2024

Send HTTP requests, parse HTML, and extract NBA player stats.

By the way, we're Bardeen, we build a free AI Agent for doing repetitive tasks.

If you’re scraping data, you'll love our AI Web Scraper. It automates data extraction without coding, saving you time and effort.

Web scraping is a powerful technique for extracting data from websites, and Python is an ideal language for this task. In this step-by-step guide, we'll walk you through the process of web scraping NBA individual player stats using Python. We'll cover setting up your Python environment, extracting data with BeautifulSoup and requests, and organizing and analyzing the scraped data using pandas.


Web scraping is a technique for extracting data from websites by automating the process of accessing and parsing web pages. It allows you to gather large amounts of data efficiently, saving time and effort compared to manual data collection. In this guide, we'll focus on web scraping NBA individual player stats using Python.

Python is an ideal language for web scraping due to its simplicity, versatility, and extensive library support. With Python, you can easily send HTTP requests to web pages, parse HTML content, and extract the desired data. By leveraging powerful libraries like BeautifulSoup and pandas, you can streamline the web scraping process and perform data analysis on the scraped information.

Throughout this guide, we'll walk you through the step-by-step process of setting up your Python environment, scraping data into Google Sheets like Basketball-Reference, and organizing and analyzing the scraped data using pandas. Whether you're a sports enthusiast, data analyst, or simply curious about web scraping, this guide will provide you with the knowledge and tools to successfully scrape NBA player stats and gain valuable insights from the data.

Setting Up Your Python Environment for Web Scraping

Before you start web scraping with Python, it's important to set up a proper development environment. This involves creating a virtual environment to manage packages and dependencies, and installing essential libraries.

Here are the steps to set up your Python environment for web scraping:

  1. Create a virtual environment using tools like venv or conda. This isolates your project's dependencies from your system-wide Python installation, preventing conflicts and ensuring reproducibility.
  2. Activate your virtual environment.
  3. Install the necessary Python libraries for web scraping:
  • requests: A library for making HTTP requests to fetch web page content.
  • BeautifulSoup (from the bs4 package): A library for parsing HTML and XML content.
  • pandas: A library for data manipulation and analysis.

You can install these libraries using pip, the Python package installer. For example:

pip install requests beautifulsoup4 pandas

By setting up a virtual environment and installing the required libraries, you create a clean and isolated Python environment specifically for your web scraping project. This ensures that your project has all the necessary dependencies without interfering with other Python projects on your system.

Automate your web scraping tasks and save time with Bardeen's AI-driven playbooks. No coding needed.

Extracting Data Using BeautifulSoup and Requests

To extract data from NBA statistics websites, you can use the requests library to send HTTP requests and retrieve the HTML content. Then, utilize BeautifulSoup to parse the HTML and locate the desired data.

Here's how to use requests and BeautifulSoup for web scraping without code:

  1. Install the required libraries:pip install requests beautifulsoup4
  2. Import the libraries in your Python script:import requests
    from bs4 import BeautifulSoup
  3. Send an HTTP request to the target URL:url = "https://www.basketball-reference.com/players/j/jamesle01.html"
    response = requests.get(url)
  4. Create a BeautifulSoup object by passing the HTML content and the parser type:soup = BeautifulSoup(response.content, "html.parser")
  5. Use BeautifulSoup methods to locate specific elements:
    • find(): Retrieves the first matching element
    • find_all(): Retrieves all matching elements
    Example:table = soup.find("table", {"id": "per_game"})
    rows = table.find_all("tr")
  6. Extract data from the located elements using methods like get_text() or by accessing tag attributes.

When parsing the HTML, you can navigate the tree structure using methods like parent, children, next_sibling, and previous_sibling to locate related elements.

Remember to inspect the website's HTML structure using browser developer tools to identify the appropriate elements and attributes to target when extracting data from websites.

Organizing and Analyzing Scraped NBA Data with Pandas

After extracting the desired NBA player statistics using BeautifulSoup, you can convert the data into a structured format using the pandas library. Pandas provides powerful data manipulation and analysis capabilities, making it easier to work with the scraped data.

To convert the scraped data into a pandas DataFrame:

  1. Create an empty DataFrame with the required column names:import pandas as pd
    columns = ["Player", "Season", "PTS", "AST", "REB"]
    df = pd.DataFrame(columns=columns)
  2. Iterate over the scraped rows and extract the relevant data:for row in rows:
       player = row.find("td", {"data-stat": "player"}).get_text()
       season = row.find("td", {"data-stat": "season"}).get_text()
       pts = row.find("td", {"data-stat": "pts_per_g"}).get_text()
       ast = row.find("td", {"data-stat": "ast_per_g"}).get_text()
       reb = row.find("td", {"data-stat": "trb_per_g"}).get_text()
       df = df.append({"Player": player, "Season": season, "PTS": pts, "AST": ast, "REB": reb}, ignore_index=True)

Once the data is in a DataFrame, you can perform various data cleaning and analysis tasks:

  • Remove unnecessary columns using df.drop(columns=["column_name"])
  • Handle missing values using methods like df.fillna() or df.dropna()
  • Rename columns for clarity using df.rename(columns={"old_name": "new_name"})

With the cleaned data, you can analyze player performance metrics and compare stats across different seasons. Some examples:

  • Calculate the average points per game for each player: df.groupby("Player")["PTS"].mean()
  • Find the player with the highest assists per game in a specific season: df[df["Season"] == "2022-23"].nlargest(1, "AST")
  • Visualize the data using pandas' built-in plotting functions or libraries like Matplotlib or Seaborn.

Pandas provides a wide range of functions and methods for data manipulation and analysis, enabling you to gain insights from the scraped NBA player statistics efficiently.

Save time on data extraction with Bardeen’s integration tools. No coding required.

Automate NBA Stats Analysis with Bardeen

Web scraping NBA individual player stats can be a manual or automated process. While manual methods involve navigating to each player's statistics page and copying the data, automation through Bardeen can significantly streamline this process. Automating the extraction of NBA player stats not only saves time but also allows for the continuous monitoring and analysis of player performances throughout the season. Imagine automating the collection of stats post-game or even comparing player performances across different seasons without manually sifting through pages of data.

Here are some examples of how you can automate the extraction of web data using Bardeen's playbooks:

  1. Get data from the Google Search result page: Automate the extraction of NBA player stats from search result summaries, making it easier to compile data from various sources quickly.
  2. Get data from a LinkedIn profile search: While primarily for LinkedIn, this playbook showcases the flexibility of Bardeen's Scraper in collecting detailed information from profile searches which can be adapted for scouting reports or player profiles.
  3. Get data from the currently opened Crunchbase organization page: This playbook can inspire ways to gather financial or organizational information related to NBA teams or their management, showing the versatility of data collection beyond player stats.

By leveraging these automation strategies, you can efficiently gather and analyze NBA player stats, enhancing your sports analytics capabilities. Start automating with Bardeen by downloading the app at Bardeen.ai/download

Scrape data with Bardeen AI Web Scraper

Use Bardeen's AI Web Scraper to automate data extraction with no code.

Get Bardeen free

Related frequently asked questions

Guide to Customizing Pipedrive Settings & Dashboard

Learn how to customize Pipedrive settings, dashboard, and web forms for a personalized CRM experience. Streamline your sales strategy effectively.

Read more
Download Your Salesforce Certificate in Easy Steps

Learn how to easily download your Salesforce certificate directly from your account or via Webassessor for professional use. Step-by-step guide included.

Read more
Efficient Salesforce Lead Upload Guide in 5 Steps

Learn to mass upload leads in Salesforce using Data Import Wizard or Data Loader. Discover tips for successful data migration and field mapping.

Read more
Editing Lead Status in HubSpot: A Step-by-Step Guide

Learn how to customize and edit lead statuses in HubSpot CRM to align with your sales process, enhancing lead management efficiency.

Read more
Adding Fields to Salesforce Report Types: A Guide

Learn how to add fields to Salesforce report types, including both standard and custom reports, to customize and enhance your reporting capabilities.

Read more
Undoing HubSpot Imports: Alternative Methods (3 Steps)

Learn how to manage or undo HubSpot imports with manual deletions, property reversion, and community workarounds. Engage with the community for updates.

Read more
how does bardeen work?

Your proactive teammate — doing the busywork to save you time

Integrate your apps and websites

Use data and events in one app to automate another. Bardeen supports an increasing library of powerful integrations.

Perform tasks & actions

Bardeen completes tasks in apps and websites you use for work, so you don't have to - filling forms, sending messages, or even crafting detailed reports.

Combine it all to create workflows

Workflows are a series of actions triggered by you or a change in a connected app. They automate repetitive tasks you normally perform manually - saving you time.

get bardeen

Don't just connect your apps, automate them.

200,000+ users and counting use Bardeen to eliminate repetitive tasks

Effortless setup
AI powered workflows
Free to use
Reading time
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
By clicking “Accept”, you agree to the storing of cookies. View our Privacy Policy for more information.