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

首頁 > 編程 > C > 正文

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

2020-02-24 14:28:45
字體:
來源:轉載
供稿:網友

每個人都需要在和平時期或多或少地寫網絡爬蟲,一般來說,Python是爬蟲的首選,此外,Java和其他語言也是不錯的選擇,本文是武林技術頻道小編為大家整理的如何優雅地使用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)即可啟動爬蟲。

以上就是如何優雅地使用c語言編寫爬蟲的方法,如果你還是有不清楚的地方,你可以隨時來關注武林技術頻道小編為大家推薦的知識,感謝你對武林技術頻道的支持。

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲护士老师的毛茸茸最新章节| 中文字幕日韩免费视频| 久精品免费视频| 日韩免费观看av| 日韩中文第一页| 中文字幕成人在线| 97国产在线观看| 97视频在线观看亚洲| 9.1国产丝袜在线观看| 777精品视频| 欧美日韩国产一中文字不卡| 欧美乱大交做爰xxxⅹ性3| 亚洲国产精品va在线看黑人动漫| 国产欧美精品va在线观看| 亚洲激情视频在线播放| 久久亚洲精品中文字幕冲田杏梨| 亚洲欧美日韩一区二区在线| 亲爱的老师9免费观看全集电视剧| 日韩av电影手机在线观看| 有码中文亚洲精品| 日韩动漫免费观看电视剧高清| 欧美久久久精品| 欧美重口另类videos人妖| 国产成人jvid在线播放| 国产精品丝袜高跟| 国产成人精品电影| 亚洲午夜久久久久久久| 色狠狠av一区二区三区香蕉蜜桃| 亚洲国产精品成人一区二区| zzjj国产精品一区二区| 精品福利樱桃av导航| 精品中文字幕久久久久久| 欧美黑人又粗大| 久久色精品视频| 欧美专区中文字幕| 在线观看欧美视频| 中文精品99久久国产香蕉| 亚洲欧美一区二区三区四区| 国产精品久久久久影院日本| 精品久久久久久中文字幕| 中文字幕精品一区二区精品| 亚洲福利视频网| 亚洲欧美中文日韩在线| 欧美日韩一区二区三区在线免费观看| 日韩中文字幕在线免费观看| 久久久91精品国产一区不卡| 亚洲最大福利视频网| 欧美亚洲国产日韩2020| 亚洲国产成人精品电影| 欧美黑人巨大精品一区二区| 日韩亚洲成人av在线| 日韩亚洲综合在线| 亚洲女同精品视频| 国产精品久久久久久久久久三级| 在线观看日韩视频| 精品国产精品三级精品av网址| 亚洲欧洲免费视频| 日韩一级裸体免费视频| 久国内精品在线| 国产精品wwww| 日韩在线中文字幕| 伊人久久久久久久久久久久久| 欧美激情一区二区三区成人| 欧美激情精品久久久久久黑人| 亚洲美女激情视频| 国产美女主播一区| 亚洲第一天堂无码专区| 91亚洲精品久久久久久久久久久久| 深夜福利日韩在线看| 日韩精品在线观看网站| 亚洲精品欧美日韩| 成人淫片在线看| 国产精品永久免费视频| 久久精品99国产精品酒店日本| 亚洲人成自拍网站| 亚洲欧美制服中文字幕| 午夜精品国产精品大乳美女| 久久精品中文字幕| 色综合亚洲精品激情狠狠| 国产精品免费视频xxxx| 欧美高清一级大片| 国产精品美女免费看| 免费99精品国产自在在线| 日韩av免费看| 日韩av中文字幕在线播放| 精品久久久久久久中文字幕| 97在线看免费观看视频在线观看| 国产精品亚洲激情| 欧美电影免费观看高清完整| 欧美视频在线观看 亚洲欧| 少妇av一区二区三区| 日韩女优在线播放| 精品亚洲一区二区三区四区五区| 久久亚洲精品国产亚洲老地址| 久久99精品久久久久久青青91| 在线精品国产欧美| 欧美激情国产高清| 欧美精品免费看| 亚洲男人的天堂在线| 久久久久在线观看| 热99久久精品| 久久久中精品2020中文| 一区二区三区www| 亚洲国产精品久久久久秋霞蜜臀| 国产在线观看精品| 视频直播国产精品| 国产免费一区二区三区香蕉精| 日韩在线播放一区| 91精品一区二区| 国产成人精品日本亚洲| 亚洲午夜久久久影院| 日韩欧美在线视频免费观看| 日韩久久免费电影| 亚洲欧美另类国产| 91精品久久久久久久久青青| 精品国产一区二区三区久久狼5月| 久久精品电影网| 亚洲人成电影在线播放| 色老头一区二区三区在线观看| 成人免费高清完整版在线观看| 亚洲伊人成综合成人网| 欧美成人合集magnet| 亚洲国产精彩中文乱码av| 久久综合国产精品台湾中文娱乐网| 亚洲天堂久久av| 日日狠狠久久偷偷四色综合免费| 欧美专区第一页| 欧美日韩成人精品| 久久精品国产96久久久香蕉| 美日韩精品视频免费看| 欧美激情视频免费观看| 欧美日本国产在线| 欧美大片网站在线观看| 大荫蒂欧美视频另类xxxx| 久久精品91久久久久久再现| 欧美午夜片欧美片在线观看| 久久久久五月天| 日韩美女视频中文字幕| 91伊人影院在线播放| 久久久97精品| 亚洲第一精品久久忘忧草社区| 精品美女永久免费视频| 国产mv免费观看入口亚洲| 黄色成人在线免费| 久久精品中文字幕一区| 国产精品视频区1| 成人激情视频免费在线| 国产精品99久久久久久人| 2020久久国产精品| 国产精品成熟老女人| 国精产品一区一区三区有限在线| 91精品久久久久久久久久入口| 91精品啪在线观看麻豆免费| 亚洲欧美日韩中文视频| 国产一区二区三区18| 国产一区二区三区直播精品电影| 成人免费福利视频| 九九热这里只有精品免费看| 国产丝袜精品视频| 国产精品扒开腿做爽爽爽男男| 国产情人节一区| 青青精品视频播放| 欧美在线免费看| 国产网站欧美日韩免费精品在线观看|