From 29038b146a391e68b515a9e1df3a6f2d94ea5aa1 Mon Sep 17 00:00:00 2001 From: rav4s Date: Wed, 20 Jan 2021 14:00:01 -0600 Subject: [PATCH] Added scraping for laptops and tablets as well --- laptop.csv | 48 +++++++++++++++++++++ scraper.py | 17 +++++--- smartphone.csv | 115 +++++++++++++++++++++++++++++++++++++++++++++++++ tablet.csv | 61 ++++++++++++++++++++++++++ 4 files changed, 235 insertions(+), 6 deletions(-) create mode 100644 laptop.csv create mode 100644 smartphone.csv create mode 100644 tablet.csv diff --git a/laptop.csv b/laptop.csv new file mode 100644 index 0000000..31c49ba --- /dev/null +++ b/laptop.csv @@ -0,0 +1,48 @@ +Manufacturer,Model,Score +HP,EliteBook x360 830 G7,9 +HP,EliteBook 840 G7,9 +EliteBook,800 G5,10 +HP,ProBook 440 G7,9 +HP,Elitebook x360 1040 G5,6 +MacBook,"Pro 16"" 2019",1 +Microsoft,"Surface Laptop 3 15""",5 +MacBook,"Pro 13"" Two Thunderbolt Ports 2019",2 +HP,EliteBook x360 830 G5,9 +HP,EliteBook 840 G6,10 +HP,EliteBook 830 x360 G6,9 +MacBook,"Pro 15"" Touch Bar 2019",1 +HP,EliteBook 1050 G1,9 +MacBook,Air 13” Retina Display Late 2018,3 +MacBook,"Pro 15"" Touch Bar 2018",1 +MacBook,"Pro 13"" Touch Bar 2018",1 +Dell,Latitude E5270,10 +HP,EliteBook 840 G3,10 +Samsung,"Series 9 15""",9 +LG,"Gram 15""",9 +Acer,"Predator 17.3""",8 +Dell,XPS 13,7 +Microsoft,Surface Laptop,0 +MacBook,"Pro 13"" Touch Bar 2017",1 +Retina,MacBook 2017,1 +MacBook,"Pro 15"" Touch Bar Late 2016",1 +MacBook,"Pro 13"" Touch Bar Late 2016",1 +MacBook,"Pro 13"" Function Keys Late 2016",2 +Retina,MacBook 2016,1 +Asus,Chromebook C202,9 +Retina,MacBook 2015,1 +MacBook,"Pro 13"" Retina Display Early 2015",1 +MacBook,"Air 13"" Early 2015",4 +MacBook,"Air 11"" Early 2015",4 +MacBook,"Pro 13"" Retina Display Late 2013",1 +MacBook,"Pro 15"" Retina Display Late 2013",1 +MacBook,"Air 11"" Mid 2013",4 +MacBook,"Air 13"" Mid 2013",4 +Dell,Inspiron Duo,7 +MacBook,"Pro 13"" Retina Display Late 2012",2 +Asus,Zenbook UX32VD,8 +MacBook,"Pro 15"" Unibody Mid 2012",7 +MacBook,"Pro 15"" Retina Display Mid 2012",1 +MacBook,"Air 13"" Mid 2012",4 +MacBook,"Air 13"" Mid 2011",4 +MacBook,"Pro 15"" Unibody Early 2011",7 +MacBook,"Air 11"" Late 2010",4 diff --git a/scraper.py b/scraper.py index c868b41..0b47922 100644 --- a/scraper.py +++ b/scraper.py @@ -39,20 +39,19 @@ def data_from_each(list_of_manufacturers_without_tags, list_of_models_without_ta print(list_of_manufacturers_without_tags[j], list_of_models_without_tags[j], list_of_scores_without_tag[j]) j = j + 1 -def insert_into_csv(list_of_manufacturers_without_tags, list_of_models_without_tags, list_of_scores_without_tag): +def insert_into_csv(list_of_manufacturers_without_tags, list_of_models_without_tags, list_of_scores_without_tag, file_name): j = 0 for i in list_of_manufacturers_without_tags: - with open('list.csv', 'a', newline='') as file: + with open(file_name, 'a', newline='') as file: writer = csv.writer(file) print(list_of_manufacturers_without_tags[j], list_of_models_without_tags[j], list_of_scores_without_tag[j]) writer.writerow([list_of_manufacturers_without_tags[j], list_of_models_without_tags[j], list_of_scores_without_tag[j]]) j = j + 1 -def main(): - with open('list.csv', 'w', newline='') as file: +def scrape(link, file_name): + with open(file_name, 'w', newline='') as file: writer = csv.writer(file) writer.writerow(["Manufacturer", "Model", "Score"]) - link = "https://www.ifixit.com/smartphone-repairability" page = requests.get(link) soup = BeautifulSoup(page.content, 'html.parser') device_names = soup.findAll("div", {"class": "cell device-name"}) @@ -60,7 +59,13 @@ def main(): list_of_manufacturers_without_tags = get_device_manufacturers(device_names) list_of_models_without_tags = get_device_models(device_names, soup) list_of_scores_without_tag = format_device_scores(device_scores, soup) - insert_into_csv(list_of_manufacturers_without_tags, list_of_models_without_tags, list_of_scores_without_tag) + insert_into_csv(list_of_manufacturers_without_tags, list_of_models_without_tags, list_of_scores_without_tag, file_name) + + +def main(): + scrape("https://www.ifixit.com/smartphone-repairability", "smartphone.csv") + scrape("https://www.ifixit.com/laptop-repairability", "laptop.csv") + scrape("https://www.ifixit.com/tablet-repairability", "tablet.csv") if __name__ == '__main__': main() diff --git a/smartphone.csv b/smartphone.csv new file mode 100644 index 0000000..39ded49 --- /dev/null +++ b/smartphone.csv @@ -0,0 +1,115 @@ +Manufacturer,Model,Score +iPhone,12 Pro,6 +Microsoft,Surface Duo,2 +Samsung,Galaxy Note 20 Ultra,3 +iPhone,SE 2020,6 +Samsung,Galaxy A51,4 +Samsung,Galaxy S20 Ultra,3 +Samsung,Galaxy Z Flip,2 +Motorola,razr,1 +Google,Pixel 4 XL,4 +iPhone,11,6 +iPhone,11 Pro Max,6 +Fairphone,3,10 +Samsung,Galaxy Note10 Plus 5G,3 +Shift,6m,9 +Huawei,Mate 20 X 5G,4 +Google,Pixel 3a XL,6 +Google,Pixel 3a,6 +Samsung,Galaxy Fold,2 +Samsung,Galaxy S10,3 +Huawei,Mate 20 Pro,4 +iPhone,XR,6 +Google,Pixel 3 XL,4 +Google,Pixel 3,4 +iPhone,XS,6 +LG,G7 Thin Q,4 +OnePlus,6,5 +Huawei,P20 Pro,4 +Samsung,Galaxy S9,4 +Samsung,Galaxy S9 Plus,4 +iPhone,X,6 +Google,Pixel 2 XL,6 +Google,Pixel 2,6 +Huawei,Mate 10 Pro,4 +iPhone,8 Plus,6 +iPhone,8,6 +Samsung,Galaxy Note8,4 +Essential,Phone,1 +Samsung,Galaxy Note Fan Edition,4 +OnePlus,5,7 +Samsung,Galaxy S8,4 +Samsung,Galaxy S8 Plus,4 +LG,G6,5 +Huawei,Mate 9,5 +Google,Pixel,7 +Google,Pixel XL,7 +iPhone,7,7 +iPhone,7 Plus,7 +Sony,Xperia X Compact,6 +Moto,Z,7 +Samsung,Galaxy Note7,4 +Asus,Zenfone 3 Max,6 +Meizu,MX6,7 +LG,G5,8 +Vivo,X7 Plus,7 +Vivo,X7,6 +Huawei,P9,7 +Xiaomi,Mi 5,6 +iPhone,SE,6 +Oppo,R9m,7 +Samsung,Galaxy S7 Edge,3 +Samsung,Galaxy S7,3 +Lenovo,K5 Note,6 +Fairphone,2,10 +Huawei,Mate 8,6 +Xiaomi,Redmi Note 3,8 +Wiko,Pulp 4G Phone,7 +iPhone,6s,7 +iPhone,6s Plus,7 +Nexus,5X,7 +Nexus,6P,2 +OnePlus,2,7 +Shift,5.1,6 +LG,G4,8 +Samsung,Galaxy S6,4 +Samsung,Galaxy S6 Edge,3 +HTC,One M9,2 +Nexus,6,7 +iPhone,6,7 +iPhone,6 Plus,7 +Samsung,Galaxy Alpha,5 +Amazon,Fire Phone,3 +Samsung,Galaxy S5 Mini,5 +OnePlus,One,5 +Samsung,Galaxy S5,5 +HTC,One M8,2 +Fairphone,1,7 +Nexus,5,8 +iPhone,5s,6 +iPhone,5c,6 +Motorola,Moto X 1st Generation,7 +Samsung,Galaxy S4,8 +HTC,One,1 +BlackBerry,Z10,8 +Nexus,4,7 +Samsung,Galaxy Note II,8 +iPhone,5,7 +Samsung,Galaxy S III,8 +Motorola,Droid 4,4 +Samsung,Galaxy Nexus,7 +Motorola,Droid RAZR,4 +iPhone,4S,6 +Samsung,Galaxy Note,8 +Motorola,Droid Bionic,9 +Motorola,Droid 3,6 +Samsung,Galaxy S II,8 +Samsung,Galaxy S 4G,6 +iPhone,4 Verizon,6 +Motorola,Atrix 4G,9 +Nexus,S,7 +HTC,Surround,5 +Nokia,N8,8 +iPhone,3GS,7 +iPhone,3G,7 +iPhone,1st Generation,2 diff --git a/tablet.csv b/tablet.csv new file mode 100644 index 0000000..69c3703 --- /dev/null +++ b/tablet.csv @@ -0,0 +1,61 @@ +Manufacturer,Model,Score +Microsoft,Surface Pro X,6 +iPad,7,2 +Elite,x2 G4,9 +HP,Elite x2 1012 G2,9 +iPad,Air 3,2 +iPad,Mini 5,2 +Elite,X2 1013 G3,9 +iPad,"Pro 11""",3 +Microsoft,Surface Pro 6,1 +iPad,6,2 +Acer,Iconia One 7,8 +Kindle,Paperwhite 3rd Generation,8 +Huawei,MediaPad M2,7 +HP,ElitePad 1000 G2 Teardown,7 +Amazon,Fire 5th Generation,7 +Huawei,MediaPad T2,6 +Sony,Xperia Z4 Tablet,5 +Samsung,Galaxy Tab S3,4 +Microsoft,Surface Pro 5,1 +iPad,"Pro 10.5""",2 +LG,G Pad 7.0,8 +iPad,5 Wi-Fi,2 +HP,Pro x2 612 G2,9 +Google,Pixel C,4 +HP,Elite x2,10 +iPad,"Pro 9.7""",2 +iPad,"Pro 12.9""",3 +Microsoft,Surface Pro 4,2 +iPad,mini 4 Wi-Fi,2 +Kindle,Voyage,7 +Nexus,9,3 +iPad,Mini 3 Wi-Fi,2 +iPad,Air 2,2 +Kindle,7th Generation,8 +Kindle,Fire HD 6,6 +Microsoft,Surface Pro 3,1 +iPad,Mini 2,2 +Amazon,"Kindle Fire HDX 8.9""",7 +iPad,Air LTE,2 +Microsoft,Surface Pro 2,1 +Kindle,"Fire HDX 7""",3 +Kindle,Fire HD 2013,8 +Dell,XPS 10,9 +Microsoft,Surface Pro,1 +Amazon,"Kindle Fire HD 8.9""",5 +Google,Nexus 10,6 +iPad,Mini Wi-Fi,2 +iPad,4 Wi-Fi,2 +Microsoft,Surface,4 +Kindle,Fire HD,7 +Nexus,7,7 +Nook,Simple Touch with GlowLight,7 +Samsung,Galaxy Tab 2 7.0,8 +iPad,3 4G,2 +Nook,Tablet,6 +Kindle,Fire,8 +iPad,2 Wi-Fi EMC 2415,2 +Motorola,Xoom,8 +Dell,Streak,8 +iPad,Wi-Fi,6