【C/C++】用C语言编写爬虫—爬虫程序优化要点
写一个网络爬虫
用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语言编写爬虫—爬虫程序优化要点相关推荐
- 用c语言实现网络爬虫,C语言编写网络爬虫
C语言编写网络爬虫 #include #include #include #include #pragma comment(lib, "ws2_32.lib")//加载网络支持的库 ...
- c语言字符串dna,转录流程(c语言编写DNA转录程序)
c语言编写DNA转录程序 AT,CG 进行互换就可以了 #include #include main() { char input[50];/*Defined to store the DNA cod ...
- 使用C语言编写测速程序
可以使用 C 语言编写测速程序.要实现这个功能,你可以使用 C 语言中的时间函数来计算程序运行的时间. 具体来说,可以使用 clock() 函数来计算程序运行的时间.这个函数返回从程序开始运行到调用 ...
- 编写程序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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧 ...
- 在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积;再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积。
在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积:再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积. 1.mult. ...
- 用C语言编写低耦合程序
用C语言编写低耦合程序 耦合的定义 低耦合的优点 实现例子 普通的实现方式 低耦合的实现方式 耦合的定义 耦合,是对模块间关联程度的度量. 模块间的耦合度是指模块之间的依赖关系,其耦合性越强,同时 ...
- 使用Scala语言编写Spark应用程序实现数据去重
使用Scala语言编写Spark应用程序实现数据去重 一.题目需求 二.建立目录结构 (一)创建 sparkapp4 文件夹并切换 (二)创建 data 文件夹(存放A.txt B.txt) (三)创 ...
- C语言---找零问题------程序优化
C语言----找零问题----程序优化 题目详情: 现有一元,两元,五元面额的纸币若干,给出任意的找零要求,给出每种找零方案,输出循环次数. 优化代码一: 代码优化内容: 利用num/5,num/2来 ...
- 记一次C语言编写的爬虫 wininet 堆糖爬虫
对 没错 嗯 用C语言写的爬虫 首先,既然是爬虫,当然要能够访问网页,用C访问网页的方法也有很多,这里选择的是一种相对比较方便的wininet,用InternetOpenUrl打开url然后读取数据就 ...
- C语言编写一个赋值程序,实验2 用C语言编写简单程序——2.1 基本数据处理.doc
实验2 用C语言编写简单程序--2.1 基本数据处理 实验2 用C语言编写简单程序 2.1 基本数据处理 [实验目的] (1)掌握算术表达式和赋值表达式的使用. (2)掌握基本输出函数的使用. (3) ...
最新文章
- centOS下为PHP安装Xdebug
- php中如何上传非表单类数据,PHP Post获取不到非表单数据的问题解决办法
- IBatisNet1.5学习--配置篇
- 深度学习(二十八)——SOM, Group Normalization, MobileNet, 花式卷积进阶
- 恒压板框过滤实验数据处理_高考化学实验中:那些不常见的【特殊仪器】与装置,难得的资料...
- 问题:连接查询和子查询的区别和连接及优劣?
- MySQL存储引擎及InnoDB并发控制介绍
- 产品要想跑得赢,政策定价来帮您
- 在 Perl 中利用 DOM 和 XPath 对 XML 进行有效处理
- 【codevs3945】 完美拓印
- python thrift 示例
- java 定时调用api_java定时任务接口ScheduledExecutorService
- 美元用计算机怎么算,美金人民币汇率换算(人民币兑换率计算器)
- android主题切换框架,Prism(棱镜)——一款优秀的Android 主题动态切换框架
- cesium获取当前层级
- java内网推送app,java – 使用来自app-engine的Parse发送推送通...
- PHP 连接sql server
- Unexpected content storage modification: page=xxx; newRecord=xxx
- 使用Neo4j+InteractiveGraph实现豆瓣电影知识图谱可视化
- SolrCloud简介