Scraping faculty page with Playwright

Full code to obtain a pandas DataFrame

import pandas as pd
from playwright.async_api import async_playwright

async def scrape_faculty_data():
    async with async_playwright() as p:
        # Launch the browser and create a new context
        browser = await p.chromium.launch()
        context = await browser.new_context()
        # Create a new page within the context
        page = await context.new_page()
        # Navigate to the webpage containing the faculty list
        await page.goto("https://statistics.rutgers.edu/people-pages/faculty")
        # Wait for the content to load
        await page.wait_for_load_state("networkidle")

        # Initialize empty lists to store data
        data = []
        # Loop through all .latestnews-item elements
        faculty_items = await page.query_selector_all('.latestnews-item')
        for item in faculty_items:
            # Extract data using JavaScript evaluation
            name = await item.query_selector('span')
            title = await item.query_selector('span.detail_data')
            email = await item.query_selector('a[href^="mailto"]')

            data.append({
                'name': await (await name.evaluate_handle('node => node.textContent')).json_value(),
                'title': await (await title.evaluate_handle('node => node.textContent')).json_value(),
                'email': await (await email.evaluate_handle('node => node.textContent')).json_value()
                })

        # Close the browser
        await browser.close()

    return pd.DataFrame(data)

faculty_df = await scrape_faculty_data()
faculty_df
name title email
0 Pierre Bellec Associate Professor pcb71@stat.rutgers.edu
1 Matteo Bonvini Assistant Professor mb1662@stat.rutgers.edu
2 Steve Buyske Associate Professor; Undergraduate Co-Director... buyske@stat.rutgers.edu
3 Javier Cabrera Professor cabrera@stat.rutgers.edu
4 Rong Chen Distinguished Professor and Chair rongchen@stat.rutgers.edu
5 Yaqing Chen Assistant Professor yqchen@stat.rutgers.edu
6 Harry Crane Professor hcrane@stat.rutgers.edu
7 Tirthankar DasGupta Professor and Co-Graduate Director tirthankar.dasgupta@rutgers.edu
8 Ruobin Gong Assistant Professor ruobin.gong@rutgers.edu
9 Zijian Guo Associate Professor zijguo@stat.rutgers.edu
10 Qiyang Han Associate Professor qh85@stat.rutgers.edu
11 Donald R. Hoover Professor drhoover@stat.rutgers.edu
12 Ying Hung Professor yhung@stat.rutgers.edu
13 Koulik Khamaru Assistant Professor kk1241@stat.rutgers.edu
14 John Kolassa Distinguished Professor kolassa@stat.rutgers.edu
15 Regina Y. Liu Distinguished Professor rliu@stat.rutgers.edu
16 Gemma Moran Assistant Professor gm845@stat.rutgers.edu
17 Nicole Pashley Assistant Professor np755@stat.rutgers.edu
18 Harold B. Sackrowitz Distinguished Professor and Undergraduate Dire... sackrowi@stat.rutgers.edu
19 Michael L. Stein Distinguished Professor ms2870@stat.rutgers.edu
20 Zhiqiang Tan Distinguished Professor ztan@stat.rutgers.edu
21 David E. Tyler Distinguished Professor dtyler@stat.rutgers.edu
22 Guanyang Wang Assistant Professor guanyang.wang@rutgers.edu
23 Sijian Wang Professor and Co-Director of FSRM and MSDS pro... sijian.wang@stat.rutgers.edu
24 Han Xiao Professor and Co-Graduate Director hxiao@stat.rutgers.edu
25 Minge Xie Distinguished Professor and Director, Office o... mxie@stat.rutgers.edu
26 Min Xu Assistant Professor mx76@stat.rutgers.edu
27 Cun-Hui Zhang Distinguished Professor and Co-Director of FSR... czhang@stat.rutgers.edu
28 Linjun Zhang Assistant Professor linjun.zhang@rutgers.edu