使用一个大脚本而不是多个较小的脚本更好



我正在学习与python一起爬行的网络。我有一个带有很多URL的CSV文件。使用Python 2.7和Selenium,我目前正在抓取这些网站,以提取以下数据,例如:身体宽度(以像素为单位),HTTP响应,页面加载速度meta name="viewport"标签。

脚本I的结果I然后导出到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文件)。

i然后可以单独运行每个爬网,并将所有爬网的结果写入一个单个CSV文件(如上图所示)。通过使用多个爬网文件(假设),我认为与将所有爬网器在一个.py文件中像现在一样,我的错误敏感,更快,更灵活的爬网机更加敏感,更快,更灵活。

所以我的问题:

  1. 选项1&的利弊是什么2?
  2. 一个选项比另一个更好,如果是的话?
  3. 我在选项2中的假设是否正确?

请问,如果我的帖子可能还不够具体,但是回答我的问题会极大地帮助我!

干净的代码很好。我希望将常见的功能放在诸如crawler_library.py之类的东西中,然后让您从那里需要的特定脚本导入功能。

关于您的假设,它不是 axiomationally上 true-不同脚本中的代码在一个脚本中与代码在功能上没有不同。实际上,它通常是 true。它更容易维护和改进,对于大多数人来说,将代码纳入功能使他们可以模块化自己的尝试,使其更容易理解,等等。

如果通过"更好",您的意思是整理,清洁器代码。然后,是的,它会更加整洁。如果您还有其他Web爬行项目,而不仅仅是该项目,将它们作为模块的导入也很棒,则意味着它们可以重复使用并脱钩。能够无缝将模块接缝是一件好事。

最新更新