当前位置: 首页 > 编程笔记 >

如何优雅地使用c语言编写爬虫

孔甫
2023-03-14
本文向大家介绍如何优雅地使用c语言编写爬虫,包括了如何优雅地使用c语言编写爬虫的使用技巧和注意事项,需要的朋友参考一下

大家在平时或多或少地都会有编写网络爬虫的需求。一般来说,编写爬虫的首选自然非python莫属,除此之外,java等语言也是不错的选择。选择上述语言的原因不仅仅在于它们均有非常不错的网络请求库和字符串处理库,还在于基于上述语言的爬虫框架非常之多和完善。良好的爬虫框架可以确保爬虫程序的稳定性,以及编写程序的便捷性。所以,这个cspider爬虫库的使命在于,我们能够使用c语言,依然能够优雅地编写爬虫程序。

1、爬虫的特性

配置方便。使用一句设置函数,即可定义user agent,cookie,timeout,proxy以及抓取线程和解析线程的最大数量。
程序逻辑独立。用户可以分别定义爬虫的解析函数,和数据持久化函数。并且对于解析到的新url,用户可以使用cspider提供的addUrl函数,将其加入到任务队列中。
便捷的字符串处理。cspider中提供了基于pcre的简单的正则表达式函数,基于libxml2的xpath解析函数,以及用于解析json的cJSON库。
高效的抓取。cspider基于libuv调度抓取线程和解析线程,使用curl作为其网络请求库。
2、使用cspider的步骤

  • 获取cspider_t。
  • 自定义user agent,cookie,timeout,proxy以及抓取线程和解析线程的最大数量。
  • 添加初始要抓取的url到任务队列。
  • 编写解析函数和数据持久化函数。
  • 启动爬虫。

3、例子

先来看下简单的爬虫例子,会在后面详细讲解例子。

#include<cspider/spider.h>

/*
  自定义的解析函数,d为获取到的html页面字符串
*/
void p(cspider_t *cspider, char *d, void *user_data) {

 char *get[100];
 //xpath解析html
 int size = xpath(d, "//body/div[@class='wrap']/div[@class='sort-column area']/div[@class='column-bd cfix']/ul[@class='st-list cfix']/li/strong/a", get, 100);

 int i;
 for (i = 0; i < size; i++) {
 //将获取到的电影名称,持久化
  saveString(cspider, get[i]);
 }

}
/*
  数据持久化函数,对上面解析函数中调用的saveString()函数传入的数据,进行进一步的保存
*/
void s(void *str, void *user_data) {
 char *get = (char *)str;
 FILE *file = (FILE*)user_data;
 fprintf(file, "%s\n", get);
 return;
}

int main() {
 //初始化spider
 cspider_t *spider = init_cspider();
 char *agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0";
 //char *cookie = "bid=s3/yuH5Jd/I; ll=108288; viewed=1130500_24708145_6433169_4843567_1767120_5318823_1899158_1271597; __utma=30149280.927537245.1446813674.1446983217.1449139583.4; __utmz=30149280.1449139583.4.4.utmcsr=accounts.douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/login; ps=y; ue=965166527@qq.com; dbcl2=58742090:QgZ2PSLiDLQ; ck=T9Wn; push_noty_num=0; push_doumail_num=7; ap=1; __utmb=30149280.0.10.1449139583; __utmc=30149280";

 //设置要抓取页面的url
 cs_setopt_url(spider, "so.tv.sohu.com/list_p1100_p20_p3_u5185_u5730_p40_p5_p6_p77_p80_p9_2d1_p101_p11.html");
 //设置user agent
 cs_setopt_useragent(spider, agent);
 //cs_setopt_cookie(spider, cookie);
 //传入解析函数和数据持久化函数的指针
 cs_setopt_process(spider, p, NULL);
 //s函数的user_data指针指向stdout
 cs_setopt_save(spider, s, stdout);
 //设置线程数量
 cs_setopt_threadnum(spider, DOWNLOAD, 2);
 cs_setopt_threadnum(spider, SAVE, 2);
 //FILE *fp = fopen("log", "wb+");
 //cs_setopt_logfile(spider, fp);
 //开始爬虫
 return cs_run(spider);
}

例子讲解

cspider_t *spider = init_cspider();获取初始的cspider。cs_setopt_xxx这类函数可以用来进行初始化设置。其中要注意的是: cs_setopt_process(spider,p,NULL);cs_setopt_save(spider,s,stdout);,它们分别设置了解析函数p和数据持久化函数s,这两个函数需要用户自己实现,还有用户自定义的指向上下文信息user_data的指针。在解析函数中,用户要定义解析的规则,并对解析得到的字符串可以调用saveString进行持久化,或者是调用addUrl将url加入到任务队列中。在saveString中传入的字符串会在用户自定义的数据持久函数中得到处理。此时,用户可以选择输出到文件或数据库等。
最后调用cs_run(spider)即可启动爬虫。

赶快使用cspider爬虫框架来编写爬虫吧!

 类似资料:
  • 人生太短,不能写没人会读的废话,如果你写了废话,没人会去读。所以好一点的文档是最好的。经理不会去理解这些东西,因为不好的文档会给他们错误的安全感以至于他们不敢依赖他们的程序员。如果一些人绝对坚持你真的在写没用的文档,就告诉他们“是的”,然后安静的找一份更好的工作。 没有其他事情比精确估计 把好的文档转为放松文档要求的估计 更为有效率。真相是冷酷而艰难的:文档,就像测试,会花比开发代码多几倍的时间。

  • 主要内容:安装C-Free 5.0,运行C语言代码安装C-Free 5.0 C-Free 是一款国产的Windows下的C/ C++ IDE,最新版本是 5.0,整个软件才 14M,非常轻巧,安装简单。 下载地址: C-Free 5.0下载 按照教程中的说明安装并  C-Free 5.0。 需要注意的是:C-Free 5.0 在 XP、Win7 下能够完美运行,在 Win8、Win10 下可能会存在兼容性问题,读者可以先尝试安装,不行的话再使用

  • 主要内容:1) 新建源文件,2) 生成可执行程序,4) 总结前面我们给出了一段完整的C语言代码,就是在显示器上输出“小牛知识库”,如下所示: 本节我们就来看看如何通过 Dev C++ 来运行这段代码。 Dev C++ 支持单个源文件的编译,如果你的程序只有一个源文件(初学者基本都是在单个源文件下编写代码),那么不用创建项目,直接运行就可以;如果有多个源文件,才需要创建项目。 1) 新建源文件 打开 Dev C++,在上方菜单栏中选择“文件 --> 新建 -

  • 主要内容:安装VC6.0,在VC6.0下运行C语言程序,工程文件说明Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。 VC6.0 确实有点老了,如果不是学校要求或者项目需要,建议使用 Visual Studio

  • 主要内容:创建工程,CLion运行C语言程序对于安装完成并配置好 C/C++ 编译器的 CLion,就可以直接使用它编写并运行 C 语言程序了。接下来,我们以一段完整的 C 语言代码为例,为大家讲解如何用 CLion 运行这段代码。 创建工程 打开 CLion,选择“新建项目”,如下图所示: 图 1 新建项目 弹出如下窗口,选择要创建的项目类型,这里选择创建“C 可执行文件”项目,该项目遵循的 C语言标准为 C11: 图 2 创建C语言项目

  • 主要内容:1) 创建项目(Project),2) 添加源文件,3) 编写代码并生成程序,4) 总结提示:VS2010 可以在 XP、Win7 和 Win8 下完美运行,但在 Win10 下 可能会有兼容性问题,使用 Win10 的读者建议安装 VS2015 或者 VS2017。 前面我们给出了一段完整的C语言代码,就是在显示器上输出“小牛知识库”,如下所示: 本节我们就来看看如何通过 VS2010 来运行这段代码。 1) 创建项目(Project) 在 VS2010 下开发程序首先要创建项目,