Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-08-31 08:19:05

0001 from bs4 import BeautifulSoup
0002 import pandas as pd
0003 import re
0004 import requests
0005 html = requests.get("https://www.cnipol.bnl.gov/fills/").text
0006 
0007 soup = BeautifulSoup(html, "html.parser")
0008 
0009 data = []
0010 rows = soup.find_all("tr", class_="my_tr_highlight")
0011 
0012 pattern = re.compile(r"([-+]?\d*\.?\d+)\s*±\s*([-+]?\d*\.?\d+)")
0013 
0014 for row in rows:
0015     fill_id = row.find("a").text.strip()
0016     print(fill_id)
0017 
0018     blu_pol_values = row.find_all("td", class_="align_cm nowrap bluPol")
0019     yel_pol_values = row.find_all("td", class_="align_cm nowrap yelPol")
0020 
0021     blu_pol_match = pattern.match(blu_pol_values[0].text.strip()) if blu_pol_values else None
0022     yel_pol_match = pattern.match(yel_pol_values[0].text.strip()) if yel_pol_values else None
0023 
0024     blu_pol_mean = float(blu_pol_match.group(1)) if blu_pol_match else None
0025     blu_pol_error = float(blu_pol_match.group(2)) if blu_pol_match else None
0026     yel_pol_mean = float(yel_pol_match.group(1)) if yel_pol_match else None
0027     yel_pol_error = float(yel_pol_match.group(2)) if yel_pol_match else None
0028 
0029     data.append({
0030         "Fill ID": fill_id,
0031         "BluPol Mean": blu_pol_mean,
0032         "BluPol Error": blu_pol_error,
0033         "YelPol Mean": yel_pol_mean,
0034         "YelPol Error": yel_pol_error
0035     })
0036 
0037 df = pd.DataFrame(data)
0038 df = df.fillna(-999)
0039 df.to_csv("updatedbeampolarizations.dat", sep=" ", index=False, header=False)
0040 
0041 print(df)