写一个网络爬虫

用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. centOS下为PHP安装Xdebug
  2. php中如何上传非表单类数据,PHP Post获取不到非表单数据的问题解决办法
  3. IBatisNet1.5学习--配置篇
  4. 深度学习(二十八)——SOM, Group Normalization, MobileNet, 花式卷积进阶
  5. 恒压板框过滤实验数据处理_高考化学实验中:那些不常见的【特殊仪器】与装置,难得的资料...
  6. 问题:连接查询和子查询的区别和连接及优劣?
  7. MySQL存储引擎及InnoDB并发控制介绍
  8. 产品要想跑得赢,政策定价来帮您
  9. 在 Perl 中利用 DOM 和 XPath 对 XML 进行有效处理
  10. 【codevs3945】 完美拓印
  11. python thrift 示例
  12. java 定时调用api_java定时任务接口ScheduledExecutorService
  13. 美元用计算机怎么算,美金人民币汇率换算(人民币兑换率计算器)
  14. android主题切换框架,Prism(棱镜)——一款优秀的Android 主题动态切换框架
  15. cesium获取当前层级
  16. java内网推送app,java – 使用来自app-engine的Parse发送推送通...
  17. PHP 连接sql server
  18. Unexpected content storage modification: page=xxx; newRecord=xxx
  19. 使用Neo4j+InteractiveGraph实现豆瓣电影知识图谱可视化
  20. SolrCloud简介

热门文章

  1. 利用CAN进行简单的数据发送
  2. 密码分析学——Md4碰撞代码实现
  3. arcgis不闭合线转面_ArcGIS线转面的方法
  4. 【ESP32 S3 开发】基于I2S协议驱动INMP441数字麦克风 实现语音采集
  5. tomcat修改404页面
  6. 最新免费dede采集方法大全
  7. 数据挖掘技术现状及未来发展方向(转)
  8. Qt工程生成MiniDump文件
  9. 帮管客CRM客户管理系统 v3.2.0
  10. Eclipse插件的8种安装方式