我正在学习与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&的利弊是什么2?
- 一个选项比另一个更好,如果是的话?
- 我在选项2中的假设是否正确?
请问,如果我的帖子可能还不够具体,但是回答我的问题会极大地帮助我!
干净的代码很好。我希望将常见的功能放在诸如crawler_library.py
之类的东西中,然后让您从那里需要的特定脚本导入功能。
关于您的假设,它不是 axiomationally上 true-不同脚本中的代码在一个脚本中与代码在功能上没有不同。实际上,它通常是 true。它更容易维护和改进,对于大多数人来说,将代码纳入功能使他们可以模块化自己的尝试,使其更容易理解,等等。
如果通过"更好",您的意思是整理,清洁器代码。然后,是的,它会更加整洁。如果您还有其他Web爬行项目,而不仅仅是该项目,将它们作为模块的导入也很棒,则意味着它们可以重复使用并脱钩。能够无缝将模块接缝是一件好事。