Introduction to Web Scraping and Data Management for Social Scientists

Essex Summer School in Social Science Data Analysis 2026

Welcome to the Course

This is the course material for the Essex Summer School in Social Science Data Analysis course 2H Introduction to Web Scraping and Data Management for Social Scientists, Monday 20 July–Friday 31 July 2026.

The course provides an introduction to the automated collection of data from the internet, as well as methods for efficient and safe data management. The first week covers different modes of storing data for individual researchers and research teams, and the theory and good practices behind them. The second week focuses on methods for collecting different kinds of data from the internet through various means.

Schedule

Slides are uploaded here as the course progresses.

Day Date Session Materials Exercises
1 Mon, 20 July Introduction Slides Exercises
2 Tue, 21 July Data Structures and Wrangling Slides Exercises
3 Wed, 22 July Working with Files Slides Exercises
4 Thu, 23 July Linking and Joining Data & SQL Slides Exercises
5 Fri, 24 July Database Software and Scaling your Analyses Slides Exercises
6 Mon, 27 July Introduction to the Web Slides Exercises
7 Tue, 28 July Static Web Pages Slides Exercises
8 Wed, 29 July Application Programming Interfaces (APIs) Slides Exercises
9 Thu, 30 July Interactive Web Pages Part 1 / Part 2 –
10 Fri, 31 July Building a Reproducible Research Project Slides –

Required Software

You should have several software applications installed before the start of the course:

Download Course Materials

Clone the repository using RStudio:

  1. Create a new project (top left corner)
  2. Select “Version Control” → “Git”
  3. Use URL: https://github.com/JBGruber/ess-web-scraping-data-management.git

Install Required Packages

After cloning, you can install all required R packages with:

if (!requireNamespace("rlang", quietly = TRUE)) {
  install.packages("rlang", dependencies = TRUE)
}
rlang::check_installed("remotes")
if (!requireNamespace("jbgtemplates", quietly = TRUE)) {
  remotes::install_github("JBGruber/jbgtemplates")
}
jbgtemplates::install_deps(
  gh_packages = c(
    "JBGruber/paperboy",
    "JBGruber/playwrightr",
    "ccs-amsterdam/amcat4r"
  )
)

Course by Dr Johannes B. Gruber • GitHub Repository