最近完成了一项简单的静态爬虫任务,麻雀虽小五脏俱全,借此梳理下R项目基本架构
注,有疑问 加QQ群..[174225475].. 共同探讨进步
有偿求助请 出门左转 door , 合作愉快
基本架构
- R 脚本
R程序可以是单一的完整运行代码文件,也可以是多个相互间协调或调用的函数/程序代码集,本文介绍的主要是第二种 - Powershell 调用
通过 windows 的 powershell 终端调用 R程序, 实现 R程序 的后台运行
xx/xx/Rscript.exe xx/xx/run.R
run
也可以编辑 .bat文件,然后保存双击 .bat文件就可以了
xx/xx/Rscript.exe xx/xx/run.R
bat1
- Linux终端调用与此类同
终端运行
chmod u+x ./run.R
/usr/bin/Rscript /xx/run.R
或 run.R 首行添加 line1, 然后终端运行 line2,3
#!/usr/bin/Rscript
chmod u+x ./run.R
./run.R
R 脚本
本案例是个静态爬虫项目,大致涵盖以下几个流程:
- 获取爬取目标
- 爬取
- 爬取结果分段存储
- 分段结果合并及碎文件删除
- 根据结果中信息进行二次爬取
-
二次爬取结果存储
files
1. 确定爬取目标
爬取目标可以是个单一网址也可以是个目标list
比如通过动态查询获取与某主题相关的网页地址list(get_addr.R)
2. 爬取和分段存储
爬虫最重要的部分就是爬虫代码的编写,个中辛酸自己体会,大有阿庆嫂大战刁德一的意思,码完code之后还得测试(大部分网页代码都不那么规整),时不时会如下所示
err
为了节省内存及防止程序半路崩溃而前功尽弃,可以设置分段保存(每爬取n条存储一个本地文件),以求最大限度保存胜利成果
3. 合并并清空分段文件
爬虫程序运行完毕,需要将分段文件合并成最终的结果集,然后将无用的分段集清理,如下所示
parts1
4. 组织协调的 run.R
最后看看 run.R 里的代码结构
run.R
总结
一个完整的项目下来,R是需要很多自定义函数支持的,这些自定义函数可能结构复杂(可以定义2级函数支持1级函数的调用)代码行数较多或会被多次调用,这个时候我们就需要将他独立出来作为一个功能模块或对象来使用.
这样的项目梳理出来,就会结构清晰,便于理解和后续个性化修改
网友评论