1 Preparation

1.1 clean up

rm(list = ls())
gc()


1.2 general custom R functions

  • fpackage.check: Check if packages are installed (and install if not) in R
  • fsave: save data with time stamp in correct directory
  • fload: load R-objects under new names
  • fshowdf: Print objects (tibble / data.frame) nicely on screen in .Rmd.
fpackage.check <- function(packages) {
    lapply(packages, FUN = function(x) {
        if (!require(x, character.only = TRUE)) {
            install.packages(x, dependencies = TRUE)
            library(x, character.only = TRUE)
        }
    })
}

fsave <- function(x, file, location = "./local/", ...) {
    if (!dir.exists(location))
        dir.create(location)
    datename <- substr(gsub("[:-]", "", Sys.time()), 1, 8)
    totalname <- paste(location, datename, file, sep = "")
    print(paste("SAVED: ", totalname, sep = ""))
    save(x, file = totalname)
}

fload <- function(fileName) {
    load(fileName)
    get(ls()[ls() != "fileName"])
}


fshowdf <- function(x, digits = 2, ...) {
    knitr::kable(x, digits = digits, "html", ...) %>%
        kableExtra::kable_styling(bootstrap_options = c("striped", "hover")) %>%
        kableExtra::scroll_box(width = "100%", height = "300px")
}


1.3 necessary packages

  • rvest: part of tidyverse, not necessary to load seperately
  • stringr: for text manipulation
  • xml2: rvest is build on xml2 but at times at is handy to use xml2 directly

1.3.1 R

packages = c("rvest", "tidyverse", "stringr", "xml2")
fpackage.check(packages)
rm(packages)

1.3.2 Python

Make sure you have the required libraries by typing in the code below into your console

pip install requests beautifulsoup4 pandas


and import necessary modules

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re


1.4 Input the static URL you wish to scrape

1.4.1 R

url <- "https://www.rug.nl/about-ug/practical-matters/find-an-expert?lang=en&discipline=Sociology"


RugSociology <- read_html(url)




2 Scraping scholar names

2.1 R

You will need to know the tags or XPath to the exact types of elements you are looking for. You can do this by inspecting the webpage itself and finding the common code between all items you want to get.

Alternatively, you can use extensions such as Selector Gadget to get the XPath or tags you are looking for. Here, I am inputting the code used to specify information from an individual staff member

Staffmembers <- RugSociology %>%
    html_elements(".rug-ph-xs")

Subsequently verify that the first entry into my staff members list is indeed the first person on the webpage

xml_child(Staffmembers[[1]], 1)
xml_child(Staffmembers[[2]], 1)
#> {html_node}
#> <div>
#> [1] <div class="rug-h3">\n<a href="/staff/d.a.e.van.aalst/">Aalst, dr. D.A.E. van, PhD</a>\n</div>
#> [2] <div class="rug-mb-s">Teachers; Bullying; Primary school; School team; Relative Age Effect (R ...
#> {html_node}
#> <div>
#> [1] <div class="rug-h3">\n<a href="/staff/a.albakkor/">Albakkor, A., MA MSc</a>\n</div>
#> [2] <div class="rug-mb-s">\n\n<span>Qualitative ethnographic research<br><br>Syrian diasporic com ...

Again, then using Selector Gadget or looking at the similarities between each individual staff members list, we can find the tag that corresponds just to the names, and extract just the text from this using html_text2. For the difference between html_text/2

StaffNames <- Staffmembers %>%
    html_nodes("div") %>%
    html_elements(".rug-h3") %>%
    html_text2()
head(StaffNames)
#> [1] "Aalst, dr. D.A.E. van, PhD"       "Albakkor, A., MA MSc"            
#> [3] "Albornoz Barra, G.A. Gonzalo, MA" "Althoff, M., Dr"                 
#> [5] "Badurdeen, F.A., Dr"              "Bakker, dr. D.M."

Similarly, this can be done for other information like their email

StaffEmail <- Staffmembers %>%
    html_element(".rug-mb-s:nth-child(1) .rug-width-s-20-24") %>%
    html_text2()
# necessary to clean text
StaffEmail <- gsub("[\r\n0-9+/]", "", StaffEmail)
# remove all the trailing spaces after cleaning (using the (.nl).*) while still keeping the end of
# the email (using \\1)
StaffEmail <- gsub("(.nl).*", "\\1", StaffEmail)
# Finally, we see we didnt scrape the @ (as it is a symbol that also means something else in html
# so the html_text function didnt think it was text and subsequently removed it) so we must put it
# back in place of the space it left
StaffEmail <- gsub(" ", "@", StaffEmail)
# and then we have all 118 emails!
head(StaffEmail)
#> [1] "d.a.e.van.aalst@rug.nl"    "a.albakkor@rug.nl"         "g.a.albornoz.barra@rug.nl"
#> [4] "m.althoff@rug.nl"          "f.a.badurdeen@rug.nl"      "d.m.bakker@rug.nl"

Fiels of research:

StaffExpertese <- Staffmembers %>%
    html_element(".rug-mb-s~ .rug-mb-s+ .rug-mb-s .rug-width-s-20-24") %>%
    html_text2()
# Here we remove line breaks and replace them with semi-colons
StaffExpertese <- gsub("[\r\n]", "; ", StaffExpertese)
head(StaffExpertese)
#> [1] "Sociology"                                                                   
#> [2] "Sociology; Social Sciences, Interdisciplinary; Humanities, Multidisciplinary"
#> [3] "Law, Multidisciplinary Approaches; Sociology; Cultural Studies"              
#> [4] "Criminology & Penology; Sociology; Law"                                      
#> [5] "Sociology; Social Sciences, Interdisciplinary"                               
#> [6] "Sociology"

Function/role:

StaffRole <- Staffmembers %>%
    html_element(".rug-layout:nth-child(2) .rug-width-s-20-24") %>%
    html_text2()
head(StaffRole)
#> [1] "PhD Student"                        ""                                  
#> [3] "PhD student"                        "Associate Professor of Criminology"
#> [5] ""                                   "Postdoctoral Researcher"

Misc Info:

StaffInfo <- Staffmembers %>%
    html_element(".rug-h3+ .rug-mb-s") %>%
    html_text2()
head(StaffInfo)
#> [1] "Teachers; Bullying; Primary school; School team; Relative Age Effect (RAE)"                                                                                            
#> [2] "Qualitative ethnographic researchSyrian diasporic communities in EuropeMigration studies"                                                                              
#> [3] "Legal socialization, legal literacy, narrative studies, prison studies"                                                                                                
#> [4] "Public discourses and public opinion of crime and punishment. Social reactions to criminality and the criminal justice system. Gendered aspects of crime and violence."
#> [5] "violent extremism, conflict transformation, peacebuilding"                                                                                                             
#> [6] "cooperation, normative behavior, social dilemmas, game theory, experimental sociology"

After we get all the information we want, we can then combine it into a single dataframe to allow for better storage and data manipulation

RugSociologyEmployees <- data.frame(cbind(StaffNames, StaffEmail, StaffRole, StaffExpertese, StaffInfo))

fshowdf(RugSociologyEmployees, caption = "Our table of all the Sociology Employees in the RuG")
Table 2.1: Our table of all the Sociology Employees in the RuG
StaffNames StaffEmail StaffRole StaffExpertese StaffInfo
Aalst, dr. D.A.E. van, PhD PhD Student Sociology Teachers; Bullying; Primary school; School team; Relative Age Effect (RAE)
Albakkor, A., MA MSc Sociology; Social Sciences, Interdisciplinary; Humanities, Multidisciplinary Qualitative ethnographic researchSyrian diasporic communities in EuropeMigration studies
Albornoz Barra, G.A. Gonzalo, MA PhD student Law, Multidisciplinary Approaches; Sociology; Cultural Studies Legal socialization, legal literacy, narrative studies, prison studies
Althoff, M., Dr Associate Professor of Criminology Criminology & Penology; Sociology; Law Public discourses and public opinion of crime and punishment. Social reactions to criminality and the criminal justice system. Gendered aspects of crime and violence.
Badurdeen, F.A., Dr Sociology; Social Sciences, Interdisciplinary violent extremism, conflict transformation, peacebuilding
Bakker, dr. D.M. Postdoctoral Researcher Sociology cooperation, normative behavior, social dilemmas, game theory, experimental sociology
Been, dr. W.M. Assistant professor Sociology Labour sociology
Belloir, A.C., MA Lecturer and PhD Candidate Criminology & Penology; Sociology; Public Administration Public Administration
Bilecen, B., Dr Associate Professor of Sociology and Rosalind Franklin Fellow Sociology
  • Sociology of migration and transnationalisation- Sociology of social inequalities - Sociology of higher education- Sociology of health and well-being- Personal network analysis
Bock, prof. dr. ir. B.B. Professor for Population Decline and Quality of Life in Northern Netherlands Sociology rural development, social innovation, rural mobility and migration, rural magrinalisation, rural governance, participatory governance, animal welfare, rural gender, sustainable food production and consumption, green care, multifunctional agriculture
Bosman, dr. M.H. Lecturer / Policy Officer Sociology sociology of education, school careers, inequality and stratification, family sociology
Bosman, M.P.W.J., MSc Lecturer Sociology
Boulil, D.Z., MA Lecturer Sociology; Art; Social Sciences, Quantitative Methods cultural diplomacy, cultural entrepreneurship, cultural leadership
Bouman, dr. L. Assistant professor Social Sciences, Interdisciplinary; Sociology; Social Sciences, Quantitative Methods Cooperation, Collective action, Social Innovation, Agent-Based Modelling, Experimental methods
Bras, prof. dr. H.A.J. Aletta Jacobs Professor of Economic and Social History, with special attention to Global Demography and Health Demography; History of Medicine; Sociology Historical demography; Reproductive health; Maternal and child health; History of nursing; Gender; Inequalities; Medical and health humanities; sub-Saharan Africa
Brennan, C.J., Dr Marketing Advisor Sociology; Marketing International marketing and communications. Student recruitment. Social media. KPI analysis.
Carpenedo Rodrigues, M., PhD Assistant Professor in Christian Cultural Heritage in the Global South and Marie Curie Fellow Sociology; Religion; Anthropology
Castelein, prof. dr. S. Professor of Recovery from Severe Mental Illness Behavioural Sciences; Psychology, Clinical; Sociology Mental health; psychiatry; recovery; psychosis; severe mental illness; psychosocial interventions; research in clinical practice; care standards
Cetinoglu, T., PhD Sociology; Political Science
Cowen, D.R., MSc PhD Student Sociology Agent-based Modeling, Social Networks, Web Scraping, Data Science, Cooperation
De Lacey, A.J.D., PhD Music; Journalism; Sociology Dr Alex de Lacey is Assistant Professor in Popular Music at the University of Groningen, the Netherlands. He is the author of Level Up: Live Performance and Creative Process in Grime Music (Routledge, 2023). His research on rap music has been published in… read more
Dietz, M.B., MSc PhD Candidate Behavioural Sciences; Sociology Sociology, Clinical and Social Psychology
Dijk, prof. dr. ir. C.E.M.J. van Honorary professor Pharmacy Health Services Research Health Policy & Services; Sociology; Pharmacy
Dijkstra, dr. J. Associate Professor Sociology game theory, exchange networks, collective decision making, mathematical sociology
Dijkstra, dr. J.K. Associate Professor Sociology status, antisocial behavior, risk behavior,adolescence, social networks
Duijn, prof. dr. M.A.J. van Full Professor of Statistics, in particular models for Social Network Analysis Statistics & Probability; Sociology statistics, social network analysis, multilevel analysis
Feliciani, T. PhD Student Sociology Social influence, opinion polarization, agent-based modeling, ethnic diversity, radical-right
Flache, A., Prof Professor Sociology; Social Sciences, Quantitative Methods; Social Sciences, Interdisciplinary Social integration, Cooperation, Social networks, Agent-based modelling, Social complexity
Flamind, A.A., MA International Relations; Philosophy; Sociology
Frey, V.C., PhD Assistant professor Sociology trust, cooperation, social networks, social influence, experiments
Gauthier, A.M.H. Honorary Professor of Comparative Family Studies Demography; Sociology
Gerner-Haan, M. van, PhD Assistant Professor Social Sciences, Interdisciplinary; Sociology; Communication Studies Survey Methodology: mixed-mode and mixed-device surveys, targeting of hard-to-survey populations, interviewer-respondent interaction.

Qualitative Research methods: interviews, focus groups, thematic analysis

Member Educational Committee Sociology
Giardini, F., PhD Associate professor Sociology; Social Sciences, Interdisciplinary; Computer Science, Interdisciplinary Applications Francesca is an interdisciplinary social scientist with a strong interest in micro-foundations of social phenomena. She uses theoretical analysis, agent-based modeling and lab experiments to investigate how individual minds are geared to achieve social sustainability and resilience. In her work she focuses on gossip and reputation as social mechanisms that, depending on the interplay betwen individual cognitions and network structure (within and between organizations), shape sustainable cooperation. She is interested in the realistic modeling of human behavior to improve risk communication, emergency management and disaster resilience. She is one of the coordinators of the Special Interest Group of the European Social Simulation Association SIG-BRICSS: Building Resilience with Social Simulations .
Glebbeek, dr. A.C. Associate Professor Sociology sociology of work, public policy, social welfare
Goedkoop, F., PhD PhD Sociology; Psychology, Social
Groot, S. de PhD Candidate Public, Environmental & Occupational Health; Sociology
Heyse, dr. L. Associate Professor of Sociology (with ius promovendi) Sociology I study nonprofit and public organizations that aim to improve the situation and position of disadvantaged groups in society. I focus on the relationship between these organizations’ policies and interventions, their organizational features and the… read more
Hiemstra, J.H.J., MSc PhD student Sociology Sociale netwerkanalyse, criminele netwerken
Hiemstra, S.R. Junior Researcher ‘Statushoudersproject’ Sociology; Public, Environmental & Occupational Health; Psychology, Social
Huisman, dr. J.M.E. Assistant Professor Social Sciences, Quantitative Methods; Statistics & Probability; Sociology Statistics, missing data, multiple imputation, social network analysis
Huitsing, dr. G.E. Assistant Professor Sociology Bullying and victimization; Anti-bullying interventions; Social network analysis and interventions; Social-emotional development; Prosocial and antisocial behavior; Peer relations; Educational sociology.
Ignatieva, A. Sociology
Janietz, C., MSc Sociology
Jansen, dr. D.E.M.C. Associate professor Health systems and Organisation of care for children and adolescents Sociology; Health Policy & Services; Medicine, General & Internal Comparison of European health systems, organisation of care (public health, primary care and youth care), evaluation of care, children and adolescents, vulnerable families, medical sociology
Kalmijn, prof. dr. M. Professor at NIDI Demography; Sociology Quantitative research, methods, statistics, demography, datacollection, family and life course, divorce, migration, social inequality, intergenerational relations.
Kiekens, dr. W.J. Assistent Professor Sociology LGBTQ+ youth, substance use (smoking, alcohol, marijuana), mental health (depression, anxiety), sexual orientation, gender identity
Knibbe, dr. K.E. Associate Professor Sociology and Anthropology of Religion Anthropology; Religion; Sociology Kim Knibbe is Associate Professor Anthropology and Sociology of Religion. In her work, she focuses on theorizing religion and culture inductively, based on ethnographic research, in pluralistic contexts. She has recently completed the 5 year project “Sexu… read more
Kuppens, T., Dr Assistant professor Psychology, Multidisciplinary; Sociology My main current research interest is the study of social class, and educational background in particular. Combining sociological and social psychological approaches, we are using a social identity framework to understand the effect of education on social… read more
Kuschel, A., MSc PhD Student Psychology, Social; Sociology
Laninga-Wijnen, A.M., M Postdoctoral fellow Sociology; Education, Special; Psychology, Clinical Lydia Laninga-Wijnen did her PhD at the department of Interdisciplinary Social Science, Utrecht University, The Netherlands. She has worked on the project “Social Network Analysis of Risk behavior in Early Adolescence” and examined the role of popular… read more
Lavrov, I. Sociology; Organization Studies; Computer Science, Interdisciplinary Applications Ilya Lavrov is an interdisciplinary researcher specialising in resilient societies and decision-making in politics and business. With a keen interest in public policy, digitalisation, transdisciplinarity, cooperation and complex societal issues, he delves… read more
Lee, S., PhD Lecturer Sociology; Social Issues Dr. Seonok started working at the Department of Minority and Multilingualism in 2021. As a sociologist, she is interested in social inequalities in general. In particular, her expertise is in global labor migration, labor market integration, inequality,… read more
Lindenberg, prof. dr. S.M., PhD Full Professor of Cognitive Sociology Sociology cognitive sociology, microfoundations for theories on collective phenomena, goal-framing theory, theory of goals and wellbeing (SPF theory), pro- and antisocial behavior solidarity, groups and relationships, community, governance in and of organizations, institutions
Lippényi, Z., PhD Assistant Professor Sociology Organizational SociologySociology of WorkSocial Inequality, Mobility, and Stratification
Liu, J. Sociology Cognitive social structures, triadic relations model, perception of friendship
Loseva, A., MA Sociology intergroup relations, agent-based modeling, social networks
Lucardie, dr. A.P.M. Senior Research Fellow Political Science; Sociology
Markantoni, dr. ing. M. Lecturer of Business and Entrepreneurship International Business; Business; Sociology Sustainable business models, energy citizenship, rural and regional development, community empowerment, community and rural resilience
Martínez-Ariño, J., Dr Assistant Professor of Sociology of Religion Sociology; Religion Sociology of religion, secularism, governance of religious diversity, cities, governance networks, public institutions, contempotary Jewish communities, non-religion, apostasy
Matos Fernandes, C.A. de, MSc PhD Candidate Sociology cooperation, social preferences, social networks
Michelakis, G., MSc Organizational Psychology; Sociology
Nientimp, D., MSc Sociology; Behavioural Sciences Behavioral Change, Environmental Psychology, Habits, Human Robot Interaction
Nieuwenhuis, J.G., PhD Assistant professor Sociology; Urban Studies Short clip (in Dutch): https://www.youtube.com/watch?v=E8WeU7KmIfs
Noord, J.J.L. van Post-doc researcher Sociology; Psychology, Social
Nowak, T., Dr Assistant Professor of Political Science Political Science; Law; Sociology
Nuenen, dr. F.M. van Sociology; Social Sciences, Biomedical Biopsychosociale benadering van gezondheidszorg
Odding, M.C., MSc PhD student Sociology; Social Issues
Ouwendijk, A., MSc Junior Teacher Psychology & Educational Sciences Education & Educational Research; Sociology
Palomares Linares, dr. M.I. Sociology; Family Studies; Demography Residential (im)mobility, internal migration, family networks, metropolitan areas, neighbourhoods
Pardoel, Z.E. Researcher and PhD-student Sociology; Anthropology
Pistocchi, V. Sociology Hi! I am a sociologist and PhD candidate at the University of Trento.My research interests are in the fields of religion, intergroup relations, immigrant social and cultural integration, stereotyping and discrimination, gender, social network analysis,… read more
Ploeg, dr. R. van der Assistant professor Sociology; Social Sciences, Quantitative Methods; Social Sciences, Interdisciplinary Bullying, group processes and social statusPeer relations (social networks)Intervention research Quantitative research methods for longitudinal research
Raven, dr. D. RoQua Scientific Coordinator Sociology; Psychiatry
Redhead, D.J., PhD Sociology; Psychology, Multidisciplinary; Evolutionary Biology Social Hierarchy; Inequality; Human Behavioural Ecology; Cultural Evolution; Social Network Analysis
Rengers, J.M., MSc Sociology; Psychology, Social Workplace inclusion, disclosure, and identity management of employees with a concealable stigmatized minority identity, with a specific focus on lesbian, gay, and bisexual people
Richardson, J.E.F., MSc PHD Researcher Psychology, Social; Sociology My (Phd) research focusses on social relations (e.g. social capital, group identity) and how they influence health and wellbeing. I study these proceses in the context of a larger (applied) project “Gronings Perpectief”, in which we study the social impact… read more
Rol, dr. M.E.G.M. Lecturer Philosophy; Economics, General; Sociology scientific concept formation, relationship theory and policy, policy evaluation and policy reconstruction
Roos, M., MSc Lecturer Sociology; Social Sciences, Quantitative Methods; Cultural Studies Research methods, problem-based learning, social identity & cooperation
Santara, S., MSc Sociology
Scheuer, A., MSc PhD student Psychology; Psychology, Social; Sociology
Schijf, J.E., MSc Policy Adviser Dean Faculty of Arts | PhD-student Education & Educational Research; Sociology Policy Advisor Dean Faculty of Arts Within the Faculty of Arts, I work as advisor/secretary to the dean. My work focuses on advising on national policy issues related to the humanities discipline. I am secretary of the Disciplineoverleg Letteren en Geesteswetenschappen (Discipline Consultation Committee for the Arts and Humanities, DLG), which consists of the deans of all Faculties of Arts and Humanities in the Netherlands. I coordinate the national implementation of the Sectorplan Geesteswetenschappen (Humanities Sector Plan), administrative processes around the 16 national research schools and coordination with relevant discussion partners, for example the SSH Council, Ministry of Education and NWO (Dutch Research Council). PhD-student research group Higher Education (FBSS) Title: Interdisciplinary Understanding in Higher Education In recent years, higher education institutes have developed more and more interdisciplinary education programmes (in the Dutch context). These programmes aim, among other things, to teach students interdisciplinary understanding, translated into knowledge and skills that make it possible to cross disciplinary borders and contribute to complex solving. In this PhD trajectory, we investigate the acquisition of interdisciplinary understanding by Bachelor’s students who follow an interdisciplinary honours programme. We develop an instrument that measures interdisciplinary understanding, investigate which students participate in interdisciplinary education and their propensity for interdisciplinary understanding, examine what the interdisciplinary learning process looks like according to students and teachers and measure the extent to which students aquire interdisciplinary understanding over the period of a 3-year education programme. The research is conducted within the context of the Honours College of the University of Groningen and among high-achieving students who choose not to follow an interdisciplinary honours programme (control group). Promotores: dr. E.P.W.A. Jansen & prof.dr. M.P.C. van der Werf
Sijtsema, dr. J.J. Education & Educational Research; Psychology, Developmental; Sociology Adolescent psychology, social relationships, forensic psychology, behavioral development
Silvestri, C., Dr Assistant Professor of Innovation Management & Strategy Innovation & Technology Management; Organization Studies; Sociology Theory: Impression Management | Social EvaluationsContexts: academic scientists, creative industries, professional cycling, hybrid organizations
Sivak, E., MA Sociology computational social science, parenting, childhood, machine learning, R, Python
Slot, L., MA PhD student Sociology; Communication Studies Conversation Analysis, Text Analysis, Survey Research
Smaniotto, dr. R.C. Lecturer Sociology schrijfvaardigheid; evolutionaire sociologie
Snijders, prof. dr. T.A.B. Full Professor Statistics & Probability; Social Sciences, Quantitative Methods; Sociology social networks, multilevel analysis, stochastic models in the social and behavioral sciences, statistics
Soudias, D., Dr Sociology; Political Science; Cultural Studies Cultural Economy (Economy as Culture), NeoliberalismSocial Entrepreneurship, Solidarity EconomyHappiness, CreativitySociology of Space, Practice Theory, Governmentality & SubjectivityRadical Politics, Protest, Radical ImaginationGreece, EgyptOrientalismQu… read more
Spoelder, A.B., MSc Sociology As a Researcher in Orthopedagogy at the Academic Workplace for People with Profound Intellectual and Multiple Disabilities (PIMD), I conduct practice-oriented research. For the ‘Binding & Bonding’ Project, I focus on the question: What motivates care… read more
Stadel, M., MSc PhD student Psychology, Clinical; Psychometrics; Sociology Personal network data collection and experience sampling methodology applied to personalised psychotherapy. I also have a blog together with Nina Schwarzbach where we reflect on our PhD, clinical psychology and academia in general: https://www… read more
Steglich, dr. C.E.G. Associate Professor Social Sciences, Quantitative Methods; Statistics & Probability; Sociology social networks, stochastic modelling
Stein, J.D., MSc PhD candidate Sociology Analytical Sociology, Agent-based Modeling, Experimental Sociology, Social Networks, Computational Social Science
Steverink, prof. dr. B.J.M. Associate professor Gerontology; Sociology; Psychology aging , lifecourse, social relations,self-management and self-regulation, well-beinghappiness
Strandvad, S.M., Dr Associate Professor of Arts in Society Sociology; Cultural Studies My research focuses on cultural production processes. Merging inspiration from science and technology studies into the domain of sociology of art, I develop a pragmatist approach that turns attention to how evolving objects influence the social settings of… read more
Stulp, dr. G. Associate professor sociology Sociology; Evolutionary Biology; Demography fertility outcomes; data science in the social sciences; simulation; R; visualisation; human behavioural ecology; biosocial approach; height
Tang, T., Dr Sociology; Social Sciences, Interdisciplinary Agent-based model, Complex system, Network analysis
Teekens, T.P., MSc Postdoctoral Researcher Sociology sustainable cooperation; organizational sociology; interprofessional education
Timmerman, prof. dr. M.C. Full Professor (em) Social Sciences, Interdisciplinary; Sociology Youth studies; social and educational youth issues; youth participation; educational innovations; learning communities; active learning; gender; diversity
Tol, dr. D.G. van Assistant Professor Behavioural Sciences; Medical Ethics; Sociology Medische Ethiek, Medische Professionaliteit, Medische Sociologie
Tolsma, J. Professor Sociology; Social Sciences, Interdisciplinary; Social Issues Segregation, Inequality, Social Integration, Social Networks
Trippenzee, M., MSc (Junior) academic teacher Sociology; Demography; Language & Linguistics As a (junior) academic teacher, I am involved in both giving workshops that are offered by SCOPE and researching the well-being of students. I believe that every student benefits from expanding its worldview. This can be done by having an open attitude… read more
Troost, dr. A.A. Postdoctoral researcher Geography; Sociology
Tumeltshammer, S.R., MA PhD student Sociology; Organization Studies; Demography
Valk, H.A.G. de, Prof Honorary Professor of Migration and the life course Demography; Family Studies; Sociology International migration, demographic characteristics and behaviour of migrant populations, family formation, intergenerational relationships
Veenstra, prof. dr. D.R. Professor Sociology Bullying and victimization, prosocial and antisocial behavior, social network analysis, social norms, criminality and security
Vellinga-Dings, A.D., MA MSc PhD Candidate Sociology Qualitative research | Self-management of well-being interventions
Venema, S.D., MSc PhD student Criminology & Penology; Sociology; Demography Child wellbeing and parental imprisonment Parent-child relationships and parental imprisonment Prison-based interventions aimed at strengthening parent-child relationships Child-friendly prisons
Vloedbeld, C.D.M., MA PhD student Sociology; International Relations; Political Science Security studies
Wal, dr. M. van der Lecturer, Teacher trainer social science and citizenship Education & Educational Research; Sociology Specifically teaching and measuring competencies and citizenship
Weeting, J.C., MSc Graduate School Coordinator and Study Advisor Philosophy Psychology; Sociology; Philosophy Cooperation, Trust, Identity
Werf, dr. H.M. van der Health Policy & Services; Sociology; Nursing
Wielers, dr. R.J.J. Associate Professor Sociology Sociology of Work, Sociology of organisation
Wiersma, S., MSc PhD student Sociology
Wildt, dr. L.A.W.J. de Assistant Professor in Media & Cultural Industries Cultural Studies; Sociology; Communication Studies Lars de Wildt studies how media cultures and industries make contemporary worldviews. Examples are how media industries construct ‘global’ culture and how local audiences consume it; how Western game developers sold religion to secular audiences; how… read more
Winkels, J.W. Sociology
Winter, P. de Assistant Professor Sociology; Social Issues; Public Administration Sociology of LawEmpirical ResearchPolicy SciencesSocial Security
Wittek, R.P.M., Prof Full Professor Sociology; Behavioural Sciences; Management; Business Subdisciplines Sociology of organizations - sociology of work - sociological theory - economic sociology - sociology of agingTopics Sustainable cooperation - governance - organizational control - organizational change - administrative reform -… read more
Zijlstra, L., PhD Sociology; Philosophy; Psychology

2.2 Python

# Fetch the webpage
url = "https://www.rug.nl/about-ug/practical-matters/find-an-expert?lang=en&discipline=Sociology"
response = requests.get(url)
webpage = response.content

# Parse the webpage
soup = BeautifulSoup(webpage, 'html.parser')

# Extract staff members
staff_members = soup.select('.rug-ph-xs')

# Verify the first entry
first_staff_member = staff_members[0]
second_staff_member = staff_members[1]
print(first_staff_member.prettify())
print(second_staff_member.prettify())

# Extract names
staff_names = [member.select_one('.rug-h3').get_text(strip=True) for member in staff_members]
print(staff_names[:6])

# Extract emails
staff_emails = [member.select_one('.rug-mb-s:nth-child(1) .rug-width-s-20-24').get_text(strip=True) for member in staff_members]
# Clean emails
staff_emails = [re.sub(r'[\r\n0-9+/]', '', email) for email in staff_emails]
staff_emails = [re.sub(r'(.nl).*', r'\1', email) for email in staff_emails]
staff_emails = [email.replace(' ', '@') for email in staff_emails]
print(staff_emails[:6])

# Extract fields of research and do the same cleaning (with the different characters we notice are in these fields)
staff_expertise = [member.select_one('.rug-mb-s~ .rug-mb-s+ .rug-mb-s .rug-width-s-20-24').get_text(strip=True) for member in staff_members]
staff_expertise = [expertise.replace('\r\n', '; ') for expertise in staff_expertise]
print(staff_expertise[:6])

# Extract roles
staff_roles = [member.select_one('.rug-layout:nth-child(2) .rug-width-s-20-24').get_text(strip=True) for member in staff_members]
print(staff_roles[:6])

# Extract miscellaneous info
staff_info = [member.select_one('.rug-h3+ .rug-mb-s').get_text(strip=True) for member in staff_members]
print(staff_info[:6])

# Combine data into a DataFrame
rug_sociology_employees = pd.DataFrame({
    'Name': staff_names,
    'Email': staff_emails,
    'Role': staff_roles,
    'Expertise': staff_expertise,
    'Info': staff_info
})

# Display the DataFrame
print(rug_sociology_employees.head())

# Optionally save to a file
#rug_sociology_employees.to_csv("rug_sociology_employees.csv", index=False)
LS0tDQp0aXRsZTogIlNjcmFwaW5nIFJVRyBTb2Npb2xvZ3kgZGVwYXJ0bWVudCINCmJpYmxpb2dyYXBoeTogcmVmZXJlbmNlcy5iaWINCmxpbmstY2l0YXRpb25zOiB5ZXMNCi0tLQ0KDQoNCg0KYGBge3IsIGdsb2JhbHNldHRpbmdzLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCByZXN1bHRzPSdoaWRlJywgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkgDQpsaWJyYXJ5KHJldGljdWxhdGUpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpvcHRzX2NodW5rJHNldCh0aWR5Lm9wdHM9bGlzdCh3aWR0aC5jdXRvZmY9MTAwKSx0aWR5PVRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLGNvbW1lbnQgPSAiIz4iLCBjYWNoZT1UUlVFLCBjbGFzcy5zb3VyY2U9YygidGVzdCIpLCBjbGFzcy5vdXRwdXQ9YygidGVzdDMiKSkNCm9wdGlvbnMod2lkdGggPSAxMDApDQpyZ2w6OnNldHVwS25pdHIoKQ0KDQpjb2xvcml6ZSA8LSBmdW5jdGlvbih4LCBjb2xvcikge3NwcmludGYoIjxzcGFuIHN0eWxlPSdjb2xvcjogJXM7Jz4lczwvc3Bhbj4iLCBjb2xvciwgeCkgfQ0KYGBgDQoNCmBgYHtyIGtsaXBweSwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFLCBldmFsPVRSVUV9DQojIGluc3RhbGwucGFja2FnZXMoInJlbW90ZXMiLHJlcG9zID0gImh0dHA6Ly9jcmFuLnVzLnItcHJvamVjdC5vcmciKQ0KIyByZW1vdGVzOjppbnN0YWxsX2dpdGh1Yigicmxlc3VyL2tsaXBweSIpDQojIGtsaXBweTo6a2xpcHB5KGxhbmcgPSBjKCJyIiwgInB5dGhvbiIpLCBwb3NpdGlvbiA9IGMoJ3RvcCcsICdyaWdodCcpKQ0Ka2xpcHB5OjprbGlwcHkocG9zaXRpb24gPSBjKCd0b3AnLCAncmlnaHQnKSkNCiMga2xpcHB5OjprbGlwcHkoY29sb3IgPSAnZGFya3JlZCcpDQojIGtsaXBweTo6a2xpcHB5KHRvb2x0aXBfbWVzc2FnZSA9ICdDbGljayB0byBjb3B5JywgdG9vbHRpcF9zdWNjZXNzID0gJ0RvbmUnKQ0KYGBgDQoNCiMgUHJlcGFyYXRpb24NCg0KIyMgY2xlYW4gdXANCmBgYHtyLCBjbGVhbnVwLCByZXN1bHRzPSdoaWRlJ30NCnJtKGxpc3Q9bHMoKSkNCmdjKCkNCmBgYA0KDQo8YnI+DQoNCiMjIGdlbmVyYWwgY3VzdG9tIFIgZnVuY3Rpb25zDQoNCi0gYGZwYWNrYWdlLmNoZWNrYDogQ2hlY2sgaWYgcGFja2FnZXMgYXJlIGluc3RhbGxlZCAoYW5kIGluc3RhbGwgaWYgbm90KSBpbiBSDQotIGBmc2F2ZWA6IHNhdmUgZGF0YSB3aXRoIHRpbWUgc3RhbXAgaW4gY29ycmVjdCBkaXJlY3RvcnkNCi0gYGZsb2FkYDogbG9hZCBSLW9iamVjdHMgdW5kZXIgbmV3IG5hbWVzDQotIGBmc2hvd2RmYDogUHJpbnQgb2JqZWN0cyAoYHRpYmJsZWAgLyBgZGF0YS5mcmFtZWApIG5pY2VseSBvbiBzY3JlZW4gaW4gYC5SbWRgLg0KDQoNCmBgYHtyLCBjdXN0b21mdW5jfQ0KZnBhY2thZ2UuY2hlY2sgPC0gZnVuY3Rpb24ocGFja2FnZXMpIHsNCiAgICBsYXBwbHkocGFja2FnZXMsIEZVTiA9IGZ1bmN0aW9uKHgpIHsNCiAgICAgICAgaWYgKCFyZXF1aXJlKHgsIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkpIHsNCiAgICAgICAgICAgIGluc3RhbGwucGFja2FnZXMoeCwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgICAgICAgICAgIGxpYnJhcnkoeCwgY2hhcmFjdGVyLm9ubHkgPSBUUlVFKQ0KICAgICAgICB9DQogICAgfSkNCn0NCg0KZnNhdmUgPC0gZnVuY3Rpb24oeCwgZmlsZSwgbG9jYXRpb24gPSAiLi9sb2NhbC8iLCAuLi4pIHsNCiAgICBpZiAoIWRpci5leGlzdHMobG9jYXRpb24pKQ0KICAgICAgICBkaXIuY3JlYXRlKGxvY2F0aW9uKQ0KICAgIGRhdGVuYW1lIDwtIHN1YnN0cihnc3ViKCJbOi1dIiwgIiIsIFN5cy50aW1lKCkpLCAxLCA4KQ0KICAgIHRvdGFsbmFtZSA8LSBwYXN0ZShsb2NhdGlvbiwgZGF0ZW5hbWUsIGZpbGUsIHNlcCA9ICIiKQ0KICAgIHByaW50KHBhc3RlKCJTQVZFRDogIiwgdG90YWxuYW1lLCBzZXAgPSAiIikpDQogICAgc2F2ZSh4LCBmaWxlID0gdG90YWxuYW1lKQ0KfQ0KDQpmbG9hZCAgPC0gZnVuY3Rpb24oZmlsZU5hbWUpew0KICBsb2FkKGZpbGVOYW1lKQ0KICBnZXQobHMoKVtscygpICE9ICJmaWxlTmFtZSJdKQ0KfQ0KDQoNCmZzaG93ZGYgPC0gZnVuY3Rpb24oeCwgZGlnaXRzID0gMiwgLi4uKSB7DQogICAga25pdHI6OmthYmxlKHgsIGRpZ2l0cyA9IGRpZ2l0cywgImh0bWwiLCAuLi4pICU+JQ0KICAgICAgICBrYWJsZUV4dHJhOjprYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpKSAlPiUNCiAgICAgICAga2FibGVFeHRyYTo6c2Nyb2xsX2JveCh3aWR0aCA9ICIxMDAlIiwgaGVpZ2h0ID0gIjMwMHB4IikNCn0NCmBgYA0KDQo8YnI+DQoNCiMjIG5lY2Vzc2FyeSBwYWNrYWdlcyB7LnRhYnNldCAudGFic2V0LWZhZGV9DQoNCi0gYHJ2ZXN0YDogcGFydCBvZiB0aWR5dmVyc2UsIG5vdCBuZWNlc3NhcnkgdG8gbG9hZCBzZXBlcmF0ZWx5ICANCi0gYHN0cmluZ3JgOiBmb3IgdGV4dCBtYW5pcHVsYXRpb24gIA0KLSBgeG1sMmA6IGBydmVzdGAgaXMgYnVpbGQgb24gYHhtbDJgIGJ1dCBhdCB0aW1lcyBhdCBpcyBoYW5keSB0byB1c2UgYHhtbDJgIGRpcmVjdGx5ICANCg0KIyMjIFINCg0KYGBge3IsIHBhY2thZ2VzLCByZXN1bHRzPSdoaWRlJywgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCnBhY2thZ2VzID0gYyggInJ2ZXN0IiwgInRpZHl2ZXJzZSIsICJzdHJpbmdyIiwieG1sMiIpDQpmcGFja2FnZS5jaGVjayhwYWNrYWdlcykNCnJtKHBhY2thZ2VzKQ0KYGBgDQoNCiMjIyBQeXRob24NCg0KTWFrZSBzdXJlIHlvdSBoYXZlIHRoZSByZXF1aXJlZCBsaWJyYXJpZXMgYnkgdHlwaW5nIGluIHRoZSBjb2RlIGJlbG93IGludG8geW91ciBjb25zb2xlDQpgYGB7YmFzaCwgZXZhbCA9IEZBTFNFfQ0KcGlwIGluc3RhbGwgcmVxdWVzdHMgYmVhdXRpZnVsc291cDQgcGFuZGFzDQpgYGAgDQoNCg0KDQo8YnI+DQoNCmFuZCBpbXBvcnQgbmVjZXNzYXJ5IG1vZHVsZXMNCg0KYGBge3B5dGhvbiwgZXZhbCA9IEZBTFNFfQ0KaW1wb3J0IHJlcXVlc3RzDQpmcm9tIGJzNCBpbXBvcnQgQmVhdXRpZnVsU291cA0KaW1wb3J0IHBhbmRhcyBhcyBwZA0KaW1wb3J0IHJlDQpgYGAgDQoNCjxicj4NCg0KIyMgSW5wdXQgdGhlIHN0YXRpYyBVUkwgeW91IHdpc2ggdG8gc2NyYXBlIHsudGFic2V0IC50YWJzZXQtZmFkZX0NCg0KIyMjIFINCg0KPCEtLSBgYGB7cn0gLS0+DQoNCjwhLS0gbGlicmFyeShjaHJvbW90ZSkgLS0+DQoNCjwhLS0gYiA8LSBDaHJvbW90ZVNlc3Npb24kbmV3KCkgLS0+DQoNCg0KPCEtLSBiJHZpZXcoKSAtLT4NCjwhLS0gYiRQYWdlJG5hdmlnYXRlKHVybCkgLS0+DQo8IS0tIHNlc3MgPC0gTGl2ZUhUTUwkbmV3KHVybCkgLS0+DQo8IS0tIHNlc3MkdmlldygpIC0tPg0KPCEtLSBzZXNzJGh0bWxfZWxlbWVudHMoIi5ydWctcGgteHMiKSAgLS0+DQo8IS0tIGBgYCAtLT4NCg0KDQpgYGB7ciwgcnZlc3QsIGV2YWwgPSBUUlVFfQ0KdXJsIDwtICJodHRwczovL3d3dy5ydWcubmwvYWJvdXQtdWcvcHJhY3RpY2FsLW1hdHRlcnMvZmluZC1hbi1leHBlcnQ/bGFuZz1lbiZkaXNjaXBsaW5lPVNvY2lvbG9neSINCg0KDQpSdWdTb2Npb2xvZ3kgPC0gcmVhZF9odG1sKHVybCkNCmBgYCANCjxicj4NCg0KDQojIyB7LnVubGlzdGVkIC51bm51bWJlcmVkfQ0KDQoNCjxicj4NCg0KLS0tDQoNCiMgU2NyYXBpbmcgc2Nob2xhciBuYW1lcyB7LnRhYnNldCAudGFic2V0LWZhZGV9DQoNCiMjIFINCg0KWW91IHdpbGwgbmVlZCB0byBrbm93IHRoZSB0YWdzIG9yIFhQYXRoIHRvIHRoZSBleGFjdCB0eXBlcyBvZiBlbGVtZW50cyB5b3UgYXJlIGxvb2tpbmcgZm9yLiBZb3UgY2FuIGRvIHRoaXMgYnkgaW5zcGVjdGluZyB0aGUgd2VicGFnZSBpdHNlbGYgYW5kIGZpbmRpbmcgdGhlIGNvbW1vbiBjb2RlIGJldHdlZW4gYWxsIGl0ZW1zIHlvdSB3YW50IHRvIGdldC4NCg0KQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgZXh0ZW5zaW9ucyBzdWNoIGFzIFNlbGVjdG9yIEdhZGdldCB0byBnZXQgdGhlIFhQYXRoIG9yIHRhZ3MgeW91IGFyZSBsb29raW5nIGZvci4gSGVyZSwgSSBhbSBpbnB1dHRpbmcgdGhlIGNvZGUgdXNlZCB0byBzcGVjaWZ5IGluZm9ybWF0aW9uIGZyb20gYW4gaW5kaXZpZHVhbCBzdGFmZiBtZW1iZXINCg0KYGBge3IsIGV2YWwgPSBUUlVFfQ0KU3RhZmZtZW1iZXJzIDwtIFJ1Z1NvY2lvbG9neSAlPiUgaHRtbF9lbGVtZW50cygiLnJ1Zy1waC14cyIpDQpgYGANCg0KU3Vic2VxdWVudGx5IHZlcmlmeSB0aGF0IHRoZSBmaXJzdCBlbnRyeSBpbnRvIG15IHN0YWZmIG1lbWJlcnMgbGlzdCBpcyBpbmRlZWQgdGhlIGZpcnN0IHBlcnNvbiBvbiB0aGUgd2VicGFnZQ0KYGBge3IsIGV2YWwgPSBUUlVFLCByZXN1bHRzID0gJ2hvbGQnfQ0KeG1sX2NoaWxkKFN0YWZmbWVtYmVyc1tbMV1dLCAxKQ0KeG1sX2NoaWxkKFN0YWZmbWVtYmVyc1tbMl1dLCAxKQ0KYGBgDQoNCkFnYWluLCB0aGVuIHVzaW5nIFNlbGVjdG9yIEdhZGdldCBvciBsb29raW5nIGF0IHRoZSBzaW1pbGFyaXRpZXMgYmV0d2VlbiBlYWNoIGluZGl2aWR1YWwgc3RhZmYgbWVtYmVycyBsaXN0LCB3ZSBjYW4gZmluZCB0aGUgdGFnIHRoYXQgY29ycmVzcG9uZHMganVzdCB0byB0aGUgbmFtZXMsIGFuZCBleHRyYWN0IGp1c3QgdGhlIHRleHQgZnJvbSB0aGlzIHVzaW5nIGh0bWxfdGV4dDIuIEZvciB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFtodG1sX3RleHQvMl0oIGh0dHBzOi8vcnZlc3QudGlkeXZlcnNlLm9yZy9yZWZlcmVuY2UvaHRtbF90ZXh0Lmh0bWwpDQoNCmBgYHtyLCBldmFsID0gVFJVRX0NClN0YWZmTmFtZXMgPC0gU3RhZmZtZW1iZXJzICU+JSBodG1sX25vZGVzKCJkaXYiKSAlPiUgaHRtbF9lbGVtZW50cygiLnJ1Zy1oMyIpICU+JSBodG1sX3RleHQyKCkNCmhlYWQoU3RhZmZOYW1lcykNCmBgYA0KDQpTaW1pbGFybHksIHRoaXMgY2FuIGJlIGRvbmUgZm9yIG90aGVyIGluZm9ybWF0aW9uIGxpa2UgdGhlaXIgZW1haWwNCmBgYHtyLCBldmFsID0gVFJVRX0NClN0YWZmRW1haWwgPC0gU3RhZmZtZW1iZXJzICU+JSBodG1sX2VsZW1lbnQoIi5ydWctbWItczpudGgtY2hpbGQoMSkgLnJ1Zy13aWR0aC1zLTIwLTI0IikgJT4lIGh0bWxfdGV4dDIoKQ0KI25lY2Vzc2FyeSB0byBjbGVhbiB0ZXh0DQpTdGFmZkVtYWlsPC0gZ3N1YigiW1xyXG4wLTkrL10iLCAiIiwgU3RhZmZFbWFpbCkNCiNyZW1vdmUgYWxsIHRoZSB0cmFpbGluZyBzcGFjZXMgYWZ0ZXIgY2xlYW5pbmcgKHVzaW5nIHRoZSAoLm5sKS4qKSB3aGlsZSBzdGlsbCBrZWVwaW5nIHRoZSBlbmQgb2YgdGhlIGVtYWlsICh1c2luZyBcXDEpDQpTdGFmZkVtYWlsIDwtIGdzdWIoIigubmwpLioiLCAiXFwxIiwgU3RhZmZFbWFpbCkNCiNGaW5hbGx5LCB3ZSBzZWUgd2UgZGlkbnQgc2NyYXBlIHRoZSBAIChhcyBpdCBpcyBhIHN5bWJvbCB0aGF0IGFsc28gbWVhbnMgc29tZXRoaW5nIGVsc2UgaW4gaHRtbCBzbyB0aGUgaHRtbF90ZXh0IGZ1bmN0aW9uIGRpZG50IHRoaW5rIGl0IHdhcyB0ZXh0IGFuZCBzdWJzZXF1ZW50bHkgcmVtb3ZlZCBpdCkgc28gd2UgbXVzdCBwdXQgaXQgYmFjayBpbiBwbGFjZSBvZiB0aGUgc3BhY2UgaXQgbGVmdA0KU3RhZmZFbWFpbCA8LSBnc3ViKCIgIiwgIkAiLCBTdGFmZkVtYWlsKQ0KI2FuZCB0aGVuIHdlIGhhdmUgYWxsIDExOCBlbWFpbHMhDQpoZWFkKFN0YWZmRW1haWwpDQpgYGANCg0KRmllbHMgb2YgcmVzZWFyY2g6ICANCmBgYHtyLCBldmFsID0gVFJVRX0NClN0YWZmRXhwZXJ0ZXNlIDwtIFN0YWZmbWVtYmVycyAlPiUgaHRtbF9lbGVtZW50KCIucnVnLW1iLXN+IC5ydWctbWItcysgLnJ1Zy1tYi1zIC5ydWctd2lkdGgtcy0yMC0yNCIpICU+JSBodG1sX3RleHQyKCkNCiNIZXJlIHdlIHJlbW92ZSBsaW5lIGJyZWFrcyBhbmQgcmVwbGFjZSB0aGVtIHdpdGggc2VtaS1jb2xvbnMgDQpTdGFmZkV4cGVydGVzZTwtIGdzdWIoIltcclxuXSIsICI7ICIsIFN0YWZmRXhwZXJ0ZXNlKQ0KaGVhZChTdGFmZkV4cGVydGVzZSkNCmBgYA0KDQpGdW5jdGlvbi9yb2xlOiANCmBgYHtyLCBldmFsID0gVFJVRX0NClN0YWZmUm9sZSA8LSBTdGFmZm1lbWJlcnMgJT4lIGh0bWxfZWxlbWVudCgiLnJ1Zy1sYXlvdXQ6bnRoLWNoaWxkKDIpIC5ydWctd2lkdGgtcy0yMC0yNCIpICU+JSBodG1sX3RleHQyKCkNCmhlYWQoU3RhZmZSb2xlKQ0KYGBgDQoNCk1pc2MgSW5mbzoNCmBgYHtyLCAgZXZhbCA9IFRSVUV9DQpTdGFmZkluZm8gPC0gU3RhZmZtZW1iZXJzICU+JSBodG1sX2VsZW1lbnQoIi5ydWctaDMrIC5ydWctbWItcyIpICU+JSBodG1sX3RleHQyKCkNCmhlYWQoU3RhZmZJbmZvKQ0KYGBgDQoNCkFmdGVyIHdlIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIHdlIHdhbnQsIHdlIGNhbiB0aGVuIGNvbWJpbmUgaXQgaW50byBhIHNpbmdsZSBkYXRhZnJhbWUgdG8gYWxsb3cgZm9yIGJldHRlciBzdG9yYWdlIGFuZCBkYXRhIG1hbmlwdWxhdGlvbg0KYGBge3IsIGV2YWwgPSBUUlVFfQ0KDQpSdWdTb2Npb2xvZ3lFbXBsb3llZXMgPC0gZGF0YS5mcmFtZShjYmluZChTdGFmZk5hbWVzLFN0YWZmRW1haWwsU3RhZmZSb2xlLFN0YWZmRXhwZXJ0ZXNlLFN0YWZmSW5mbykpDQoNCmZzaG93ZGYoUnVnU29jaW9sb2d5RW1wbG95ZWVzLCBjYXB0aW9uID0gIk91ciB0YWJsZSBvZiBhbGwgdGhlIFNvY2lvbG9neSBFbXBsb3llZXMgaW4gdGhlIFJ1RyIgKSANCg0KYGBgDQoNCiMjIFB5dGhvbg0KDQpgYGB7cHl0aG9uLCBldmFsID0gRkFMU0V9DQojIEZldGNoIHRoZSB3ZWJwYWdlDQp1cmwgPSAiaHR0cHM6Ly93d3cucnVnLm5sL2Fib3V0LXVnL3ByYWN0aWNhbC1tYXR0ZXJzL2ZpbmQtYW4tZXhwZXJ0P2xhbmc9ZW4mZGlzY2lwbGluZT1Tb2Npb2xvZ3kiDQpyZXNwb25zZSA9IHJlcXVlc3RzLmdldCh1cmwpDQp3ZWJwYWdlID0gcmVzcG9uc2UuY29udGVudA0KDQojIFBhcnNlIHRoZSB3ZWJwYWdlDQpzb3VwID0gQmVhdXRpZnVsU291cCh3ZWJwYWdlLCAnaHRtbC5wYXJzZXInKQ0KDQojIEV4dHJhY3Qgc3RhZmYgbWVtYmVycw0Kc3RhZmZfbWVtYmVycyA9IHNvdXAuc2VsZWN0KCcucnVnLXBoLXhzJykNCg0KIyBWZXJpZnkgdGhlIGZpcnN0IGVudHJ5DQpmaXJzdF9zdGFmZl9tZW1iZXIgPSBzdGFmZl9tZW1iZXJzWzBdDQpzZWNvbmRfc3RhZmZfbWVtYmVyID0gc3RhZmZfbWVtYmVyc1sxXQ0KcHJpbnQoZmlyc3Rfc3RhZmZfbWVtYmVyLnByZXR0aWZ5KCkpDQpwcmludChzZWNvbmRfc3RhZmZfbWVtYmVyLnByZXR0aWZ5KCkpDQoNCiMgRXh0cmFjdCBuYW1lcw0Kc3RhZmZfbmFtZXMgPSBbbWVtYmVyLnNlbGVjdF9vbmUoJy5ydWctaDMnKS5nZXRfdGV4dChzdHJpcD1UcnVlKSBmb3IgbWVtYmVyIGluIHN0YWZmX21lbWJlcnNdDQpwcmludChzdGFmZl9uYW1lc1s6Nl0pDQoNCiMgRXh0cmFjdCBlbWFpbHMNCnN0YWZmX2VtYWlscyA9IFttZW1iZXIuc2VsZWN0X29uZSgnLnJ1Zy1tYi1zOm50aC1jaGlsZCgxKSAucnVnLXdpZHRoLXMtMjAtMjQnKS5nZXRfdGV4dChzdHJpcD1UcnVlKSBmb3IgbWVtYmVyIGluIHN0YWZmX21lbWJlcnNdDQojIENsZWFuIGVtYWlscw0Kc3RhZmZfZW1haWxzID0gW3JlLnN1YihyJ1tcclxuMC05Ky9dJywgJycsIGVtYWlsKSBmb3IgZW1haWwgaW4gc3RhZmZfZW1haWxzXQ0Kc3RhZmZfZW1haWxzID0gW3JlLnN1YihyJygubmwpLionLCByJ1wxJywgZW1haWwpIGZvciBlbWFpbCBpbiBzdGFmZl9lbWFpbHNdDQpzdGFmZl9lbWFpbHMgPSBbZW1haWwucmVwbGFjZSgnICcsICdAJykgZm9yIGVtYWlsIGluIHN0YWZmX2VtYWlsc10NCnByaW50KHN0YWZmX2VtYWlsc1s6Nl0pDQoNCiMgRXh0cmFjdCBmaWVsZHMgb2YgcmVzZWFyY2ggYW5kIGRvIHRoZSBzYW1lIGNsZWFuaW5nICh3aXRoIHRoZSBkaWZmZXJlbnQgY2hhcmFjdGVycyB3ZSBub3RpY2UgYXJlIGluIHRoZXNlIGZpZWxkcykNCnN0YWZmX2V4cGVydGlzZSA9IFttZW1iZXIuc2VsZWN0X29uZSgnLnJ1Zy1tYi1zfiAucnVnLW1iLXMrIC5ydWctbWItcyAucnVnLXdpZHRoLXMtMjAtMjQnKS5nZXRfdGV4dChzdHJpcD1UcnVlKSBmb3IgbWVtYmVyIGluIHN0YWZmX21lbWJlcnNdDQpzdGFmZl9leHBlcnRpc2UgPSBbZXhwZXJ0aXNlLnJlcGxhY2UoJ1xyXG4nLCAnOyAnKSBmb3IgZXhwZXJ0aXNlIGluIHN0YWZmX2V4cGVydGlzZV0NCnByaW50KHN0YWZmX2V4cGVydGlzZVs6Nl0pDQoNCiMgRXh0cmFjdCByb2xlcw0Kc3RhZmZfcm9sZXMgPSBbbWVtYmVyLnNlbGVjdF9vbmUoJy5ydWctbGF5b3V0Om50aC1jaGlsZCgyKSAucnVnLXdpZHRoLXMtMjAtMjQnKS5nZXRfdGV4dChzdHJpcD1UcnVlKSBmb3IgbWVtYmVyIGluIHN0YWZmX21lbWJlcnNdDQpwcmludChzdGFmZl9yb2xlc1s6Nl0pDQoNCiMgRXh0cmFjdCBtaXNjZWxsYW5lb3VzIGluZm8NCnN0YWZmX2luZm8gPSBbbWVtYmVyLnNlbGVjdF9vbmUoJy5ydWctaDMrIC5ydWctbWItcycpLmdldF90ZXh0KHN0cmlwPVRydWUpIGZvciBtZW1iZXIgaW4gc3RhZmZfbWVtYmVyc10NCnByaW50KHN0YWZmX2luZm9bOjZdKQ0KDQojIENvbWJpbmUgZGF0YSBpbnRvIGEgRGF0YUZyYW1lDQpydWdfc29jaW9sb2d5X2VtcGxveWVlcyA9IHBkLkRhdGFGcmFtZSh7DQogICAgJ05hbWUnOiBzdGFmZl9uYW1lcywNCiAgICAnRW1haWwnOiBzdGFmZl9lbWFpbHMsDQogICAgJ1JvbGUnOiBzdGFmZl9yb2xlcywNCiAgICAnRXhwZXJ0aXNlJzogc3RhZmZfZXhwZXJ0aXNlLA0KICAgICdJbmZvJzogc3RhZmZfaW5mbw0KfSkNCg0KIyBEaXNwbGF5IHRoZSBEYXRhRnJhbWUNCnByaW50KHJ1Z19zb2Npb2xvZ3lfZW1wbG95ZWVzLmhlYWQoKSkNCg0KIyBPcHRpb25hbGx5IHNhdmUgdG8gYSBmaWxlDQojcnVnX3NvY2lvbG9neV9lbXBsb3llZXMudG9fY3N2KCJydWdfc29jaW9sb2d5X2VtcGxveWVlcy5jc3YiLCBpbmRleD1GYWxzZSkNCmBgYCANCg0K


Copyright © 2024 Jochem Tolsma