guide

How to Web Scrape a Table in Python: From Static HTML to Dynamic Pages

Learning how to web scrape a table in Python opens up a world of possibilities for data analysis, automation, and research. Whether you’re scraping a static table from Wikipedia or a dynamic one from an e-commerce site, Python offers flexible tools to make the job easier.
How to Web Scrape a Table in Python: From Static HTML to Dynamic Pages

Web scraping tables is one of the most practical ways to collect structured data from websites—whether it’s financial statistics, sports results, academic records, or product lists. In this guide, we’ll explore how to web scrape a table in Python, using both simple and advanced methods, with examples tailored to real-world use cases.

1. The Quick Way: Using pandas.read_html()

The easiest method for scraping tables is with pandas.read_html(), which automatically detects and converts HTML tables into Pandas DataFrames.

import pandas as pd

url = "https://en.wikipedia.org/wiki/Demographics_of_India"
tables = pd.read_html(url, match="Population distribution")
df = tables[0]
print(df.head())
  • This method uses BeautifulSoup and lxml under the hood.
  • The match parameter helps target a specific table.

Pros: Extremely fast and simple. Cons: Only works on static HTML tables.

2. More Control: BeautifulSoup + Requests

If you need finer control or want to clean the data during extraction, combining requests with BeautifulSoup is a reliable approach.

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://datatables.net/examples/styling/stripe.html"
resp = requests.get(url)
soup = BeautifulSoup(resp.text, "html.parser")
table = soup.find("table", class_="stripe")

rows = []
for tr in table.tbody.find_all("tr"):
    cells = [td.get_text(strip=True) for td in tr.find_all("td")]
    rows.append(cells)

df = pd.DataFrame(rows, columns=[th.get_text() for th in table.thead.find_all("th")])
print(df.head())

This is helpful when:

  • The table is nested inside custom HTML structures.
  • You want to customize how rows and columns are parsed.

3. Scraping Dynamic Tables with Selenium

If the table is loaded dynamically using JavaScript (AJAX), then a static HTML parser won’t work. In this case, you can use Selenium to load and render the page as a browser would.

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

driver = webdriver.Chrome()
driver.get("https://example.com/dynamic_table")
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")

table = soup.find("table", id="myTable")
df = pd.read_html(str(table))[0]
driver.quit()
print(df.head())

Pros: Can handle JavaScript-heavy websites. Cons: Slower, requires browser drivers like ChromeDriver.

4. Accessing Hidden APIs Behind Tables

Sometimes the table content is not hardcoded into the HTML but fetched from an API in the background. This is actually a more efficient way to extract data:

  1. Open DevTools → Network → XHR/Fetch
  2. Locate the API URL used to load table data
  3. Use requests.get() to retrieve JSON data
import requests
import pandas as pd

api = "https://www.levantineceramics.org/vessels/datatable.json"
data = requests.get(api).json()
df = pd.DataFrame(data["data"])
print(df.head())

Pros: Fast and clean. Cons: Requires inspecting the site’s network calls.

5. Scalable Scraping with Scrapy

If you're building a large-scale scraper or need asynchronous performance, Scrapy is a powerful Python framework for crawling and extracting data.

import scrapy

class TableSpider(scrapy.Spider):
    name = "table_spider"
    start_urls = ["https://example.com/page_with_table"]

    def parse(self, response):
        for row in response.xpath('//table//tr'):
            yield {
                'column1': row.xpath('td[1]/text()').get(),
                'column2': row.xpath('td[2]/text()').get()
            }

Pros: Great for multiple pages, built-in pipelines. Cons: More complex setup and learning curve.

Comparison Table

Need Method Pros Cons
Simple HTML tables pandas.read_html() Fast and beginner-friendly Only works on static content
Custom structure BeautifulSoup + requests High control, clean data More code required
JavaScript tables Selenium Can render dynamic content Slower, heavier setup
Background API Direct API request Fast and efficient Requires DevTools inspection
Large-scale scraping Scrapy Scalable and async Advanced setup

Responsible Scraping

Before scraping, always:

  • Check robots.txt and the site’s Terms of Service
  • Use rate limiting to avoid overloading the server
  • Add headers like user-agent to mimic a browser
  • Use proxies or headless browsing to avoid blocks

No-Code Scraping with MrScraper

If coding isn’t your thing—or you need to extract tables from difficult or protected websites—use MrScraper.

MrScraper is a visual, AI-powered web scraping tool that makes it easy to:

  • Extract tables with just a few clicks
  • Scrape JavaScript-rendered pages
  • Export to CSV or JSON
  • Use proxy rotation and CAPTCHA bypass automatically

Whether you're scraping product lists, public records, or movie data, MrScraper handles the hard part for you—no code required.

Conclusion

Learning how to web scrape a table in Python opens up a world of possibilities for data analysis, automation, and research. Whether you’re scraping a static table from Wikipedia or a dynamic one from an e-commerce site, Python offers flexible tools to make the job easier.

And for those who want the simplest, most efficient solution, MrScraper helps you collect structured data from any website—without touching a line of code.

Ready to scrape your first table? Try MrScraper today.

Get started now!

Step up your web scraping

Try MrScraper Now

Find more insights here

Unblocked Google: What It Means and How to Access It Safely

Unblocked Google: What It Means and How to Access It Safely

Access to Google services like Search, Drive, Translate, or Gmail—is blocked in certain regions or networks. The term unblocked Google refers to methods users employ to access these services from censored environments like schools, workplaces, or restrictive countries (e.g. China). This post explains how it works, legal considerations, and best practices.

Bingle Proxy: What It Is, How It Works, and Why It Matters

Bingle Proxy: What It Is, How It Works, and Why It Matters

Bingle Proxy is an online proxy platform that enables indirect browsing. When you request a site via Bingle Proxy, the request goes through Bingle’s server, which fetches the content—so your IP remains hidden from the target website

Maximizing Web Scraping with Bright Data Proxy: An In-Depth Guide

Maximizing Web Scraping with Bright Data Proxy: An In-Depth Guide

Bright Data Proxy stands out as a top-tier solution for enterprises and advanced users—offering unparalleled IP variety, geo-targeting, and anti-blocking capabilities. This article explores what makes it special, when to use it, and how it compares to other options.

What people think about scraper icon scraper

Net in hero

The mission to make data accessible to everyone is truly inspiring. With MrScraper, data scraping and automation are now easier than ever, giving users of all skill levels the ability to access valuable data. The AI-powered no-code tool simplifies the process, allowing you to extract data without needing technical skills. Plus, the integration with APIs and Zapier makes automation smooth and efficient, from data extraction to delivery.


I'm excited to see how MrScraper will change data access, making it simpler for businesses, researchers, and developers to unlock the full potential of their data. This tool can transform how we use data, saving time and resources while providing deeper insights.

John

Adnan Sher

Product Hunt user

This tool sounds fantastic! The white glove service being offered to everyone is incredibly generous. It's great to see such customer-focused support.

Ben

Harper Perez

Product Hunt user

MrScraper is a tool that helps you collect information from websites quickly and easily. Instead of fighting annoying captchas, MrScraper does the work for you. It can grab lots of data at once, saving you time and effort.

Ali

Jayesh Gohel

Product Hunt user

Now that I've set up and tested my first scraper, I'm really impressed. It was much easier than expected, and results worked out of the box, even on sites that are tough to scrape!

Kim Moser

Kim Moser

Computer consultant

MrScraper sounds like an incredibly useful tool for anyone looking to gather data at scale without the frustration of captcha blockers. The ability to get and scrape any data you need efficiently and effectively is a game-changer.

John

Nicola Lanzillot

Product Hunt user

Support

Head over to our community where you can engage with us and our community directly.

Questions? Ask our team via live chat 24/5 or just poke us on our official Twitter or our founder. We're always happy to help.