【问题标题】:Is it better to use one big script instead of multiple smaller ones?使用一个大脚本而不是多个小脚本更好吗?
【发布时间】:2017-03-10 10:55:13
【问题描述】:

我正在学习使用 python 进行网络爬虫。我有一个包含很多 URL 的 CSV 文件。我目前正在使用 python 2.7 和 selenium 抓取这些网站以提取数据,例如:body width(以像素为单位)、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 中的假设是否正确?

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

【问题讨论】:

    标签: python-2.7 csv web-crawler


    【解决方案1】:

    干净的代码是好的。我希望将常用函数放入crawler_library.py 之类的东西中,然后让您的特定脚本从那里导入他们需要的函数。

    关于您的假设,公理并非如此 - 不同脚本中的代码在功能上与一个脚本中的代码没有区别。但实际上,通常是正确的。它更容易维护和改进,对于大多数人来说,将代码放入函数中可以让他们将尝试做的事情模块化,使其更容易理解等等。

    【讨论】:

      【解决方案2】:

      如果“更好”是指更整洁、更干净的代码。那么是的,它会更整洁。如果你还有其他的网络爬虫项目,不只是这个,把它们作为模块导入也很好,这意味着它们是可重用的,并且是解耦的。能够无缝切换模块进出是一件好事。

      【讨论】:

        猜你喜欢
        • 2019-06-18
        • 2021-01-03
        • 2021-07-07
        • 1970-01-01
        • 2022-01-17
        • 2019-07-04
        • 2016-06-15
        • 2018-02-15
        相关资源
        最近更新 更多