我需要运行一个程序来抓取网站,我已经有一个算法和一些代码的一部分。问题是,我不知道如何在源代码中插入wget。我们的学生助手暗示,在wget之前应该使用一些关键字或函数( system,我想是什么,但我不太确定)。
发布于 2013-03-11 20:22:02
每当要从C程序运行外壳命令时,都可以使用system("shell command").In命令
system("wget");注意- wget是一个可执行文件,其位置被添加到path变量中,因此不需要显式指定路径。
--示例--
#include <stdio.h>
#define BUFFLEN 2500
int main()
{
char web_address[BUFFLEN] = "www.google.com";
system("wget 'web_address' ");
return 0;
}发布于 2013-03-11 20:07:28
when to not use system (何时不使用system)
1.)当您想要将程序分发到不同的环境时,您通过系统调用的程序不可用
2.)在安全相关的环境中,您必须确保您调用的程序确实是您想要的程序。
3.)当你想做的事情只需10-20行C代码就能轻松完成时
4.)在性能关键型应用程序中
所以,你应该永远不要使用system。
相反,为了完成同样的事情,您可以使用libcurl,正如David建议的那样(他的答案似乎已经消失了……),或者执行一些套接字编程(毕竟是C语言)。
在现实世界的场景中,我可能只会默认使用不同的语言编写爬虫。web请求和复杂的字符串处理不一定是C的强项,并且使用起来肯定不是很方便:)
发布于 2013-03-11 19:56:30
您可以使用system()命令。
在您的情况下(可能):
system("/bin/wget");但是如果你真的想用参数来调用wget,那么你应该使用execl()。
execl("/bin/wget", "http://anyadress.com/file");https://stackoverflow.com/questions/15337932
复制相似问题