使用一个大脚本而不是多个小脚本更好吗?

时间:2017-03-10 10:55:13

标签: python-2.7 csv web-crawler

我正在学习使用python进行网络爬行。我有一个包含大量网址的CSV文件。使用python 2.7和selenium我正在抓取这些网站以提取数据,如:正文宽度(以像素为单位),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个抓取工具= 1 .py文件)并将我当前的脚本(一个.py文件)拆分为多个爬虫(多个.py文件)。

然后,我可以单独运行每个爬虫,并将所有爬虫的结果写入一个CSV文件(如上图所示)。通过使用多个爬虫文件(假设),我认为我将拥有更清晰,更少错误敏感,更快速和更灵活的爬虫,而不是像我现在一样在一个.py文件中使用所有爬虫。

所以我的问题:

  1. 选项1&的优点和缺点是什么? 2?
  2. 一种选择比另一种更好,如果是这样,为什么?
  3. 我在选项2中的假设是否正确?
  4. 对不起,如果我的帖子可能不够具体,但回答我的问题会对我有很大的帮助!

2 个答案:

答案 0 :(得分:1)

清洁代码很好。我希望将常用函数放入类似crawler_library.py的函数中,然后让您的特定脚本从那里导入所需的函数。

关于您的假设,它不是 axiomatically true - 不同脚本中的代码与一个脚本中的代码在功能上没有区别。但实际上,通常是真的。它更容易维护和改进,对于大多数人来说,将代码放入函数允许他们模块化他们想要做的事情,使其更容易理解等。

答案 1 :(得分:0)

如果通过"更好"你的意思是整洁,清洁的代码。然后是的,它会更加整洁。如果您有其他Web爬网项目,而不仅仅是这个项目,将它们作为模块导入也很棒,这意味着它们可以重用,并且可以解耦。能够无缝地切换模块是一件好事。

相关问题