亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

如何優雅地使用c語言編寫爬蟲

2020-01-26 14:47:58
字體:
來源:轉載
供稿:網友

大家在平時或多或少地都會有編寫網絡爬蟲的需求。一般來說,編寫爬蟲的首選自然非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, "http://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爬蟲框架來編寫爬蟲吧!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品va在线观看黑人| 国产成人精品综合| 韩国国内大量揄拍精品视频| 欧美极品少妇xxxxⅹ免费视频| 青青在线视频一区二区三区| 91亚洲国产成人精品性色| 欧美xxxx18性欧美| 久久777国产线看观看精品| 欧美激情一区二区三区成人| 亚洲人成网站在线播| 国产精品高清在线| 久热精品视频在线免费观看| 国产日韩在线精品av| 性色av一区二区三区| 久久久久久国产精品美女| 久久6精品影院| 亚洲一区久久久| 国产丝袜高跟一区| 欧美整片在线观看| 亚洲免费电影在线观看| 一区二区亚洲欧洲国产日韩| 国产在线视频2019最新视频| 国产精品极品美女在线观看免费| 国产精品吴梦梦| 国模极品一区二区三区| 国产主播在线一区| 欧美激情亚洲一区| 久久青草精品视频免费观看| 欧美日韩国产一区二区三区| 久久久亚洲欧洲日产国码aⅴ| 日韩69视频在线观看| 91亚洲精品一区| 国产精品老牛影院在线观看| 欧美激情按摩在线| 中文一区二区视频| 欧美与黑人午夜性猛交久久久| 日韩欧美在线第一页| 久热爱精品视频线路一| 欧美日韩国产丝袜美女| 久久久久久com| 亚洲色图综合网| 欧美丰满少妇xxxxx做受| 清纯唯美亚洲综合| 亚洲欧洲国产伦综合| 国产欧美最新羞羞视频在线观看| 国产欧美中文字幕| 日韩成人中文字幕在线观看| 亚洲成人网在线观看| 日韩在线视频免费观看高清中文| 亚洲韩国欧洲国产日产av| 91热福利电影| 日韩av观看网址| 一本色道久久88综合日韩精品| 久久久成人精品| 国产日韩精品电影| 不卡av日日日| 久久人人爽亚洲精品天堂| 国产欧美 在线欧美| 国模精品一区二区三区色天香| 亲爱的老师9免费观看全集电视剧| 国产精品久久网| 欧美夫妻性生活视频| 国产精品自拍偷拍视频| www.99久久热国产日韩欧美.com| 欧美性高跟鞋xxxxhd| 国产成人+综合亚洲+天堂| 亚洲欧洲国产精品| 久久久免费精品视频| 欧美日韩中文字幕| 中文字幕精品在线| xvideos亚洲人网站| 成人激情视频在线播放| 亚洲国产精久久久久久| 国产精品久久久久久久久久ktv| 色综合伊人色综合网站| 精品亚洲一区二区三区四区五区| 亚洲精品一区二区三区婷婷月| 97在线观看视频| 97超碰国产精品女人人人爽| 久久久久久久久久国产| 精品国产一区久久久| 精品国产欧美成人夜夜嗨| 日韩在线一区二区三区免费视频| 久久福利视频导航| 日韩av成人在线观看| 国产91在线高潮白浆在线观看| 伊人伊成久久人综合网站| 一区二区三欧美| 欧美性猛交xxxx乱大交极品| 国产91在线播放| 亚洲女人被黑人巨大进入| 欧美又大又硬又粗bbbbb| 欧美激情在线有限公司| 丝袜一区二区三区| 欧美理论电影在线播放| 日韩电影中文 亚洲精品乱码| 国产精品福利在线| 成人国产精品日本在线| 日本成人激情视频| 亚洲欧美日韩精品久久| 亚洲美女又黄又爽在线观看| 日韩欧美在线视频日韩欧美在线视频| 国产原创欧美精品| 国产成人涩涩涩视频在线观看| 欧美激情一区二区三级高清视频| 欧美另类在线观看| 国产精品久久久久一区二区| 国产精品www色诱视频| 国产日韩欧美综合| 欧美激情国产日韩精品一区18| 91地址最新发布| 国产精自产拍久久久久久蜜| 国产精品女人网站| 国内精品小视频在线观看| 亚洲久久久久久久久久久| 亚洲第一区第一页| 成人黄色免费在线观看| 欧美大片在线看免费观看| 日韩中文字幕在线视频播放| 国产精品高潮呻吟久久av黑人| 日韩av在线免费看| 狠狠躁夜夜躁人人躁婷婷91| 亚洲精品永久免费| 91精品国产91久久久久久不卡| 亚洲国产天堂久久综合| 日本精品中文字幕| 久久视频精品在线| 欧亚精品在线观看| 久久精品视频免费播放| 久久久av免费| 色哟哟亚洲精品一区二区| 久久久久久有精品国产| 精品国产1区2区| 亚洲欧美一区二区激情| 日韩欧美国产激情| 在线观看精品自拍私拍| 国产精品久久久久91| 91av网站在线播放| 日本欧美中文字幕| 97人人爽人人喊人人模波多| 91国内揄拍国内精品对白| 91中文在线视频| 亚洲国产精品成人一区二区| 国产一区二区三区高清在线观看| 国产精品一区二区三区久久久| 国产亚洲精品91在线| 国产成人亚洲综合91| 国产精品电影一区| 尤物99国产成人精品视频| 日韩女优人人人人射在线视频| 在线观看日韩视频| 成人h视频在线观看播放| 久久久久久久国产精品视频| 亚洲精品久久久一区二区三区| 亚洲free性xxxx护士hd| 日韩精品在线免费播放| 日韩精品在线观看视频| 成人有码在线视频| 在线精品播放av| 欧美日韩在线视频首页| 日韩福利视频在线观看| 亚洲成人黄色网址| 亚洲三级免费看| 亚洲人a成www在线影院|