Files
CSC110/misc/cpu_benchmark_crawler.py
2022-02-16 22:18:23 -05:00

42 lines
1.0 KiB
Python

import csv
from dataclasses import dataclass
import requests
from bs4 import BeautifulSoup
@dataclass()
class CPU:
id: str
name: str
bench: int
@dataclass()
class E5(CPU):
val: int
ver: int
if __name__ == '__main__':
html = requests.get('https://www.cpubenchmark.net/cpu_list.php').text
soup = BeautifulSoup(html, 'html.parser')
cpus: list[CPU] = []
table = soup.find('tbody')
for tr in table.find_all('tr'):
td = tr.find_all('td')
cpus.append(CPU(tr.attrs['id'], td[0].text, int(td[1].text.replace(',', ''))))
# Filter E5
e5 = [E5(c.id, c.name, c.bench, int(c.name[14:18]),
(1 if c.name.find(' v') == -1 else int(c.name[c.name.find(' v') + 2])))
for c in cpus if 'Xeon E5-' in c.name]
print(e5)
# To CSV
with open('cpu_bench.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['ID', 'Name', 'Bench', 'Num', 'Version'])
writer.writerows([(c.id, c.name, c.bench, c.val, c.ver) for c in e5])