How to Download Facebook Videos with Python

A step by step tutorial for downloading facebook videos with Python

Updated April 10, 2023

Today, we’ll learn how to download Facebook videos using Python, a versatile and powerful programming language. With just a few lines of code, you’ll be able to save your favorite videos to your computer for offline viewing. Let’s get started!

The Theory Behind the Magic

Before we dive into the code, let’s explore the magic that makes this possible. When you watch a video on Facebook, the video is streamed to your device from Facebook’s servers. What we’ll do is intercept the video’s URL and use Python to download the video file.

To achieve this, we’ll use a combination of the following:

  • Requests: A popular Python library for making HTTP requests.
  • Beautiful Soup: A library for parsing HTML and XML documents.
  • Re: The built-in Python library for working with regular expressions.

Setting Up Your Environment

First, you’ll need to install the required libraries. Open your terminal or command prompt and run the following commands:

pip install requests
pip install beautifulsoup4

These commands install the Requests and Beautiful Soup libraries. Now you’re ready to write some code!

The Code: Downloading Facebook Videos

Now let’s dive into the fun part: writing the Python script to download Facebook videos. We’ll break this down into four steps:

  • Get the video page’s HTML content.
  • Parse the HTML and extract the video URL.
  • Download the video file.
  • Save the video to your computer.

Here’s the complete script:

import re
import requests
from bs4 import BeautifulSoup

def get_video_url(fb_video_page_url):
    response = requests.get(fb_video_page_url)
    soup = BeautifulSoup(response.text, 'html.parser')
    video_url = re.search(r'hd_src:"(.+?)"', str(soup)).group(1)
    return video_url

def download_video(video_url, save_as):
    response = requests.get(video_url, stream=True)
    with open(save_as, 'wb') as video_file:
        for chunk in response.iter_content(chunk_size=1024):
            video_file.write(chunk)

if __name__ == '__main__':
    fb_video_page_url = input("Enter the Facebook video page URL: ")
    save_as = input("Enter the filename to save the video as (including extension): ")

    video_url = get_video_url(fb_video_page_url)
    download_video(video_url, save_as)
    print("Video downloaded successfully!")

Now, let’s walk through each part of the script.

  1. Get the video page’s HTML content

We define a function called get_video_url that takes the Facebook video page URL as an argument. We use the Requests library to fetch the page content:

response = requests.get(fb_video_page_url)
  1. Parse the HTML and extract the video URL

We use Beautiful Soup to parse the HTML content:

soup = BeautifulSoup(response.text, 'html.parser')

Next, we use the re library to search for the video URL using a regular expression pattern:

video_url = re.search(r'hd_src:"(.+?)"', str(soup)).group(1)
  1. Download the video file

We define another function called download_video that takes the video URL and the desired filename as arguments. We use the Requests library again to fetch the video content, this time with the stream=True parameter to fetch the content in chunks:

response = requests.get(video_url, stream=True)
  1. Save the video to your computer

We open a new file with the desired filename in binary write mode (‘wb’):

with open(save_as, 'wb') as video_file:

Then, we iterate through the response’s content in 1KB chunks, writing each chunk to the file:

for chunk in response.iter_content(chunk_size=1024):
    video_file.write(chunk)

Finally, we wrap everything in the if __name__ == '__main__': block to ensure the script only runs when executed directly. We prompt the user to enter the Facebook video page URL and the desired filename before calling the get_video_url and download_video functions:

fb_video_page_url = input("Enter the Facebook video page URL: ")
save_as = input("Enter the filename to save the video as (including extension): ")

video_url = get_video_url(fb_video_page_url)
download_video(video_url, save_as)
print("Video downloaded successfully!")

Why Use Python to Download Facebook Videos?

There are several reasons you might want to download Facebook videos using Python:

  • Automation: You can easily automate the process of downloading multiple videos or periodically checking for new videos.
  • Customization: You have full control over the process, allowing you to tweak the script to suit your specific needs or preferences.
  • Learning experience: Writing a script like this is a great way to practice your Python skills, learn new libraries, and explore web scraping techniques.

Wrapping Up

Congratulations! You’ve successfully learned how to download Facebook videos using Python. You now have a powerful script that can save your favorite videos for offline viewing, and you’ve gained valuable experience working with Python libraries like Requests and Beautiful Soup.

As you continue your Python journey, don’t be afraid to tackle new challenges and explore different ways to apply your skills. Happy coding!

Hey! Do you love Python? Want to learn more about it?
Let's connect on Twitter or LinkedIn. I talk about this stuff all the time!