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
linux下c爬取天气的源码,一个在conky中实现获取本地天气的c源代码相关推荐
- Linux下软中断过程(详细)源码总结
一.简介 由于中断会打断内核中进程的正常调度运行,所以要求中断服务程序尽可能的短小精悍:但是在实际系统中,当中断到来时,要完成工作往往进行大量的耗时处理.因此期望让中断处理程序运行得快,并想让它完成的 ...
- python-爬虫(最后附爬取数据的源码)
爬虫初识 什么是爬虫? 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本.由于互联网数据的多样性和资源的有限性,根据用户需求定向抓取相关网页并分析已成为如今主流的爬取策略. 只要能通过浏 ...
- 基于Python,爬取豆瓣读书源码
记得上次分享了一个抓取豆瓣妹子美女图片的脚本,今天给大家分享一个爬取豆瓣读书的源码,也算是做个记录吧,目前已经在学习编程的路上,以后要是想写什么爬虫也可以参考参考自己收藏的一些代码,嗯,虽然我还是个代 ...
- Qt+mpv制作windows/linux 下的动态壁纸软件(含源码)
mpv是啥? mpv之前是mediaplayer,windwos之前好像都有预装这个,都来经过发展,现在是一个对跨平台开发很友好的播放器工具. Qt是啥? 制作桌面应用程序的开发语言及工具,基于C++ ...
- 似物性检测——linux下运行objectness-v2.2并分析源码(pami2012论文)
需要做一个似物性检测,首先去找了前段时间很火的程老师的论文BING看,大概了解objectness的含义,也跑了程老师的代码,因为自己不严谨,所以发短信问程老师还被说了,没好好看论文,不过后面自己还是 ...
- 拉勾网招聘数据爬取(公布源码)
公众号爬取拉勾网招聘数据,本文只讲重点,因为爬任何一个网站,可能最重要的就是遇到反爬怎么办,也就是第一步能不能爬下来数据的问题,本文讲如何爬取拉勾招聘数据 环境及软件:Linux乌邦图.redis.m ...
- Linux下存储多路径软件MultiPath源码分析
2019独角兽企业重金招聘Python工程师标准>>> 全局概览 测试环境为CentOS 7 X64 从RPM获取源码 $ cd ~/rpmbuild/ $ yumdownloade ...
- Python request库爬取网页html源码
#导入脚本库 from requests import *#定义公用函数获取数据,唯一参数为URL def getHTML(url):try:r=get(url) #模拟浏览器向网站发送http ge ...
- 惠农网_爬取二级网页内容(源码)_一蓑烟雨任平生
废话不多说,直接上代码 今天倒霉的网站是惠农网供应大厅 import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 fr ...
- 中国农业信息网_爬取新闻详情(源码)_一蓑烟雨任平生
废话不多说直接上代码 今天要倒霉的网站是全国农业信息网 import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 im ...
最新文章
- Depth graph
- 2005年2月9日(星期三) 晚上,熱 - 大年初一,首次創作。
- 成功解决ModuleNotFoundError: No module named 'dataset'
- linux自动安装跳过warning,linux 使用rpm安装软件时,遇到warning: rpmts_HdrFromFdno: Header V3...
- 《leetcode》single-number
- mybatis学习笔记-02-第一个mybatis程序
- C# DataTable学习
- 学好C++开发技术能从事哪些岗位?
- 《Unix环境高级编程》学习笔记
- 148. Sort List (java 给单链表排序)
- 摄像机没有连接到计算机代码45,摄像头错误代码的解决办法
- GCode_interpreter解读
- sdk寄存器地址linux,S32K SDK使用详解之PinSettings组件配置与使用详解(S32K1xx PORT 和GPIO模块)...
- 你知道什么是嵌入式技术吗?
- PPT差点被对手盗用?教你9种方法,打上你的个人信息!
- 智能电表如何采集数据?
- 如何提高外贸询单转化率
- 方波的产生——运算放大器LM324产生方波
- pii 400_为什么要加密所有个人身份信息(PII)
- 淘宝系统 B2C电子商务系统UML建模 范例