linux下c爬取天气的源码,一个在conky中实现获取本地天气的c源代码

一个在conky中实现获取本地天气的c源代码。

源文件:w01.c,配置文件:weather.rc

makefile文件。

/*这是一个可以在conky下使用的获取天气预报的小程序,一下文档为一完整的

c源文件,名称为:w01.c

与此程序相关的文件还有:wearher.rc,makefile。

其中:wearther.rc为配置文件。

作者:linux吧-邻家捣蛋精灵 tybitsfox

*/

#include "/workarea/cprogram/include/clsscr.h"

#include

#include

#ifndef BYTE

#define BYTEunsigned char

#endif

#define bufsize65536

//分析、显示数据的数量,如需更多显示可更改此处,并添加weather.rc中查询关键字和位置。

#define dnum3

/*本程序将集成所有conky气象数据的获取操作,不带参数的调用将用于获取网页数据

* 资料并保存为临时文件。/tmp/wthxx0316.dat

* 带一个参数的调用将分别析取不同的显示数据并显示。目前为析取3个数据

* 如需添加,可在weather.rc中添加相应的搜索关键字及查询位置,并且增大

* dnum的大小。

* 默认的资源文件为~/.conky/weather.rc

* 为节约conky资源,还是使用临时文件将已经获取的数据保存其中,该文件默认为:/tmp/wthdata.dat

*/

/*

* 2009年6月6日修改版,使用中文显示天气预报。

* http://203.81.29.121/tq1.php?f=o&city=%cc%A9%B0%B2

*/

FILE *fp;

size_t write_data(void *p,size_t size,size_t number,void *stream);//curl要求的回调函数,用于保存为文件

int geturl();//获取气象web网页资料

int analy();//分析,获取数据

int fnd(BYTE* pd,BYTE* ps,int len,int dlen,int fd);//由analy调用,实现分析、保存数据

int main(int argc,char** argv)

{

int i,j;

char ch[512];

if(argc==1)

{//获取网页并分析获得需要的数据,保存至临时文件wthdata.dat

if(geturl()!=0)

{

//printf("geturl error\n");所有的显示在函数中实现

return 0;

}

pid_t pid;

pid=fork();

if(pid==0)

{

system("iconv -f GB2312 -t UTF-8 /tmp/wthxx0316.da > /tmp/wthxx0316.dat");

return 0;

}

if(pid>0)

{

sleep(3);

if(analy()!=0)

{

//printf("analysis error\n");在函数中实现

return 0;

}

}

goto normal_1;

}

else

{

if(argc==2)

{//带有一个参数的调用,将实现不同数据的显示。

i=atoi(argv[1]);

if(i<1 || i>dnum)//保证参数的设置与资源文件中一致

{

goto perr_1;

}

FILE *fl;char *p1;

fl=fopen("/tmp/wthdata.dat","r");

if(fl==NULL)

{

printf("open file error\n");

goto normal_1;

}

for(j=0;j

{//通过循环获得不同行的数据。

memset(ch,0,sizeof(ch));

p1=fgets(ch,sizeof(ch),fl);

if(p1==NULL)

{

printf("get data error\n");

fclose(fl);

goto normal_1;

}

}

printf("%s",ch);

fclose(fl);

goto normal_1;

}

else

{

goto perr_1;

}

}

perr_1:

printf("get and save date usage:\n %s\ndisplay usage: %s num\n",argv[0],argv[0]);

normal_1:

return 0;

}

//与服务器通讯,获取web数据,并保存于/tmp/wt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值