我正在学习使用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文件中使用所有爬虫。
所以我的问题:
对不起,如果我的帖子可能不够具体,但回答我的问题会对我有很大的帮助!
答案 0 :(得分:1)
清洁代码很好。我希望将常用函数放入类似crawler_library.py
的函数中,然后让您的特定脚本从那里导入所需的函数。
关于您的假设,它不是
答案 1 :(得分:0)
如果通过"更好"你的意思是整洁,清洁的代码。然后是的,它会更加整洁。如果您有其他Web爬网项目,而不仅仅是这个项目,将它们作为模块导入也很棒,这意味着它们可以重用,并且可以解耦。能够无缝地切换模块是一件好事。