2017-03-10 34 views
0

我正在學習使用python進行網頁爬行。我有一個包含大量網址的CSV文件。使用python 2.7和硒我目前爬行這些網站提取像數據:體寬度(以像素爲單位),HTTP響應,網頁加載速度meta name="viewport"標籤。使用一個大腳本代替多個小腳本會更好嗎?

腳本的結果我然後導出到CSV文件與含有萃取(見下文)的數據的類型的每一列。我計劃通過編寫新的抓取工具來提取更多類型的數據。

如何我當前的腳本中的數據導出到CSV文件 - > CSV文件看起來像這樣:

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 

然而,我的腳本(一個單一的.py文件)越來越長,因此稍微複雜由於每個新功能添加了更多的代碼行。我擔心我添加的功能越多,越慢,對錯誤敏感度越高。我怎麼看它,我現在有兩個選擇:

選項1.繼續開發新功能,爬行對現有的腳本文件

選項2.編寫新的爬行功能,以不同的腳本文件:我從現在開始,我要考慮在單獨的.py文件(1 crawler = 1 .py文件)上編寫新的搜尋器,並且將當前的腳本(單個.py文件)分割爲多個搜尋器(多個.py文件) 。

我然後可單獨運行每個履帶和所有履帶結果寫入到一個單一的CSV文件(如上面示出)。通過使用多個抓取程序文件(假設),與將所有抓取工具放在一個.py文件中(比如我現在)相比,我認爲我將擁有更簡潔,更不敏感,更快,更靈活的抓取工具。

所以我的問題:

  1. 什麼是選項1 & 2的利弊?
  2. 是一種選擇優於其他,如果是這樣,爲什麼?
  3. 我在選項2中的假設是否正確?

不好意思,如果我的文章可能不夠具體,但讓我的問題得到解答將極大地幫助我!

回答

1

乾淨的代碼是好的。我會考慮將通用函數放入類似crawler_library.py的東西,然後讓您的特定腳本導入他們需要的功能。

關於您的假設,它不是公理 true - 不同腳本中的代碼在功能上與一個腳本中的代碼功能不同。但實際上,這是,一般爲真。它更容易維護和完善,對於大多數人來說,把代碼放到功能,使他們能夠modularise他們正在嘗試做的,使得它更容易理解等

0

如果「更好」你的意思是整潔,乾淨的代碼。那麼是的,它會變得更加整齊。如果您有其他網絡爬蟲項目,而不僅僅是這個項目,將它們作爲模塊導入也很棒,這意味着它們可以重複使用並且可以分離。能夠無縫切換模塊是一件好事。

相關問題