/ / Czy lepiej jest używać jednego dużego skryptu zamiast wielu mniejszych? - python-2.7, csv, web-crawler

Czy lepiej używać jednego dużego skryptu zamiast wielu mniejszych? - python-2.7, csv, robot sieciowy

Uczę się indeksowania sieci za pomocą Pythona. Mam plik CSV z wieloma adresami URL. Używając Pythona 2.7 i selenu Obecnie przeszukuję te witryny w celu wyodrębnienia danych, takich jak: szerokość treści (w pikselach), odpowiedź HTTP, szybkość ładowania strony i meta name="viewport" etykietka.

Wyniki skryptu eksportuję następnie do pliku CSV, w którym każda kolumna zawiera typ wyodrębnionych danych (patrz poniżej). Planuję wyodrębnić znacznie więcej typów danych, pisząc nowe roboty.

Jak mój obecny skrypt eksportuje dane do pliku CSV -> plik CSV wygląda następująco:

Website      |     body width  | HTTP response  |  load speed (in secs)  | Viewport
www.url1.com |       690       |         200    |           2            |      No
www.url2.com |       370       |         404    |           0.5          |      Yes

Jednak mój skrypt (jeden singiel.py) staje się coraz dłuższy, a przez to nieco bardziej złożony, z powodu większej liczby linii kodu przy każdej dodanej nowej funkcji. Obawiam się, że im więcej funkcji dodam do niego, tym wolniej i bardziej wrażliwy na błędy będzie on działał. Jak ja to widzę, mam teraz dwie możliwości:

Opcja 1. Kontynuuj zapisywanie nowych funkcji przeszukiwania w istniejącym pliku skryptu

Opcja 2. Zapisywanie nowych funkcji przeszukiwania w różnych plikach skryptów: Od teraz myślę o napisaniu nowegoroboty na osobnych plikach .py (1 robot = 1 plik .py), a także do podzielenia mojego obecnego skryptu (jeden plik .py) na wiele robotów (wiele plików .py).

Mogę wtedy uruchomić każdy robot oddzielnie i pisaćwyniki wszystkich robotów w jednym pliku CSV (jak na powyższej ilustracji). Korzystając z wielu plików przeszukiwaczy (założenie), myślę, że będę miał czystsze, mniej wrażliwe na błędy, szybsze i bardziej elastyczne roboty w porównaniu z posiadaniem wszystkich robotów w jednym pliku .py, tak jak mam teraz.

Moje pytania:

  1. Jakie są wady i zalety opcji 1 i 2?
  2. Czy jedna opcja jest lepsza od drugiej, jeśli tak, to dlaczego?
  3. Czy moje założenie w opcji 2 jest prawidłowe?

Przepraszam, jeśli mój post może nie być wystarczająco szczegółowy, ale uzyskanie odpowiedzi na moje pytania ogromnie mi pomoże!

Odpowiedzi:

1 dla odpowiedzi № 1

Czysty kod jest dobry. Chciałbym umieścić typowe funkcje w czymś takim jak plik crawler_library.py, a następnie niech określone skrypty zaimportują stamtąd funkcje, których potrzebują.

Jeśli chodzi o twoje założenie, tak nie jest aksjomatycznie prawda - kod w różnych skryptach nie różni się funkcjonalnie od kodu w jednym skrypcie. Jednak realistycznie tak jest ogólnie prawdziwe. Utrzymanie i ulepszanie jest łatwiejsze, a dla większości ludzi umieszczanie kodu w funkcjach pozwala im modularyzować to, co próbują zrobić, ułatwia zrozumienie itp.


0 dla odpowiedzi nr 2

jeśli przez „lepszy” masz na myśli bardziej uporządkowany, czystszy kod.Wtedy tak, będzie o wiele porządniej. Jeśli masz inne projekty indeksowania sieci, nie tylko ten, importowanie ich jako modułów jest również świetne, oznacza to, że można ich używać wielokrotnie i odsprzęgnąć. Możliwość bezproblemowego włączania i wyłączania modułów to dobra rzecz.