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)