写一个网络爬虫

用C语言来写一个网络爬虫,来获取一个网站上感兴趣的信息,抓取自己需要的一切。

#include<cspider/spider.h>/*

自定义的解析函数,d为获取到的html页面字符串

*/voidp(cspider_t *cspider,char*d) {char*get[100];//xpath解析htmlintsize = 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);inti;for(i =0; i < size; i++) {//将获取到的电影名称,持久化saveString(cspider,get[i]);  }}/*

数据持久化函数,对上面解析函数中调用的saveString()函数传入的数据,进行进一步的保存

*/voids(void*str) {char*get= (char*)str;  printf("%sn",get);return;}intmain() {//初始化spidercspider_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";//设置要抓取页面的urlcs_setopt_url(spider,"so.tv.sohu.com/list_p1100_p20_p3_u5185_u5730_p40_p5_p6_p77_p80_p9_2d1_p101_p11.html");//设置user agentcs_setopt_useragent(spider, agent);//cs_setopt_cookie(spider, cookie);//传入解析函数和数据持久化函数的指针

cs_setopt_process(spider, p);  cs_setopt_save(spider, s);//设置线程数量cs_setopt_threadnum(spider, DOWNLOAD,2);  cs_setopt_threadnum(spider, SAVE,2);//FILE *fp = fopen("log", "wb+");//cs_setopt_logfile(spider, fp);//开始爬虫returncs_run(spider);}

爬虫优化

爬虫程序一般分成数据采集模块,数据分析模块和反爬策略模块,如果能针对这三个模块进行优化,可以让爬虫程序稳定持续的运行。

1.采集模块

一般来说目标服务器会提供多种接口,包括url、app或者数据api,研发人员需要根据采集数据难度、每天数据量要求、目标服务器反爬限制频率分别进行测试,选择适合的采集接口及方式。

2.数据分析模块

由于网络采集存在各种不确定性,数据分析部分在根据需要做好数据解析之后,要做好异常处理及定位重启功能,避免出现程序异常退出或者数据采集遗漏、重复的情况

3.反爬策略模块

分析目标服务器的爬虫策略,控制爬虫请求频率甚至包括验证码、加密数据的破解,同时使用优质代理或爬虫代理,寻找业务独享、网络稳定、高并发、低延迟的代理产品,确保目标服务器没法进行反爬限制及预警,

通过采用以上各项优化策略,能够让爬虫程序长期稳定的运行。

点击了解更多资料,更有免费开源项目和课程等你观看哦!

【C/C++】用C语言编写爬虫—爬虫程序优化要点相关推荐

  1. 用c语言实现网络爬虫,C语言编写网络爬虫

    C语言编写网络爬虫 #include #include #include #include #pragma comment(lib, "ws2_32.lib")//加载网络支持的库 ...

  2. c语言字符串dna,转录流程(c语言编写DNA转录程序)

    c语言编写DNA转录程序 AT,CG 进行互换就可以了 #include #include main() { char input[50];/*Defined to store the DNA cod ...

  3. 使用C语言编写测速程序

    可以使用 C 语言编写测速程序.要实现这个功能,你可以使用 C 语言中的时间函数来计算程序运行的时间. 具体来说,可以使用 clock() 函数来计算程序运行的时间.这个函数返回从程序开始运行到调用 ...

  4. 编写程序C语言 用递归法求n,用C语言编写一个递归程序用来计算:1*2+2*3+3*4+.+(n-1)*n...

    用C语言编写一个递归程序用来计算:1*2+2*3+3*4+.+(n-1)*n以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧 ...

  5. 在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积;再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积。

    在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积:再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积. 1.mult. ...

  6. 用C语言编写低耦合程序

    用C语言编写低耦合程序 耦合的定义 低耦合的优点 实现例子 普通的实现方式 低耦合的实现方式 耦合的定义   耦合,是对模块间关联程度的度量. 模块间的耦合度是指模块之间的依赖关系,其耦合性越强,同时 ...

  7. 使用Scala语言编写Spark应用程序实现数据去重

    使用Scala语言编写Spark应用程序实现数据去重 一.题目需求 二.建立目录结构 (一)创建 sparkapp4 文件夹并切换 (二)创建 data 文件夹(存放A.txt B.txt) (三)创 ...

  8. C语言---找零问题------程序优化

    C语言----找零问题----程序优化 题目详情: 现有一元,两元,五元面额的纸币若干,给出任意的找零要求,给出每种找零方案,输出循环次数. 优化代码一: 代码优化内容: 利用num/5,num/2来 ...

  9. 记一次C语言编写的爬虫 wininet 堆糖爬虫

    对 没错 嗯 用C语言写的爬虫 首先,既然是爬虫,当然要能够访问网页,用C访问网页的方法也有很多,这里选择的是一种相对比较方便的wininet,用InternetOpenUrl打开url然后读取数据就 ...

  10. C语言编写一个赋值程序,实验2 用C语言编写简单程序——2.1 基本数据处理.doc

    实验2 用C语言编写简单程序--2.1 基本数据处理 实验2 用C语言编写简单程序 2.1 基本数据处理 [实验目的] (1)掌握算术表达式和赋值表达式的使用. (2)掌握基本输出函数的使用. (3) ...

最新文章

  1. python--Websocket实现, 加密 sha1,base64
  2. 用unison来同步你的远程文件夹 - Fwolf's Blog
  3. mesos marathon mysql_Mesos以及Marathon安装总结
  4. 【今日CV 视觉论文速览】Tue 21 Mar 2019
  5. 敏捷开发需求文档_需求的长期,敏捷文档
  6. 如何做好部门以及公司的文档管理、知识管理以及情报管理?——By Me
  7. 那些月入1万的自媒体大咖,惯用的4个爆款选题分享给你
  8. SDN第六次上机作业
  9. 数据结构和算法基础(6)——常用十种算法
  10. LINGO11免密版windows
  11. 「不看后悔一辈子」Python100个游戏大合集(1~15)
  12. ShardingSphere——水平分表与数据迁移
  13. 印章如何去蜡_PS怎么制作蜡封印章的效果?
  14. python模拟鼠标点击脚本_python模拟鼠标点击和键盘输入的操作
  15. html5游戏 做广告联盟怎么样,几个比较好的国外广告联盟推荐
  16. lgv20刷twrp_LG V30+ 日版 L-01K 刷机解锁BL 刷入TWR 回复日版基带
  17. 粘胶活化剂市场现状及未来发展趋势
  18. 好客租房153-地图找房模块功能分析
  19. Vue-cli3项目seo优化--静态化打包(动态改变页面Titl、keyWords、description)
  20. 四个职场规则!弄不懂会吃大亏

热门文章

  1. C语言的按位取反符号~(详解)
  2. R与RStudio的安装教程
  3. 【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
  4. django下载 中文名 文件
  5. STP/RSTP概述
  6. Android7.0编译出现问题(Failed to contact Jack server)
  7. 【企业架构设计实战】大数据架构设计
  8. redisTemplate执行lua脚本
  9. 【零知ESP8266教程】快速入门5-使用按键来控制你的灯
  10. Bean 生命周期详解