Skip to content

Scraping Dynamic JavaScript Websites

Many “dynamic” sites load data from JSON endpoints.

Use browser devtools Network tab and try:

  • call the JSON endpoint with requests
  • avoid full browser automation
  • open page
  • wait for element
  • extract HTML
selenium_get_html.py
from selenium import webdriver
 
 
driver = webdriver.Chrome()
try:
    driver.get("https://example.com")
    html = driver.page_source
    print(html[:500])
finally:
    driver.quit()
  • more fragile
  • slower
  • easier to get blocked

pch.coffeeTagline

pch.coffeeCta

pch.feedbackHeading

pch.feedbackSubheading