當前位置:首頁 » 編程語言 » c語言寫網路爬蟲程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言寫網路爬蟲程序

發布時間: 2022-03-01 00:01:25

Ⅰ 各位好,有誰做過網路蜘蛛(爬蟲)啊可以提供c語言的源代碼給我不啊能幫我解釋一下更好,謝謝!

網上又好多,可以自己下載啊。http://bbs.chinaunix.net/thread-2163118-1-1.html

Ⅱ 怎麼樣做一個簡單的網路爬蟲程序,實現爬出一個網頁中的EMAIL地址的功能。流程怎麼樣的急求~跪求~

visual studio 的winform就可以
先確定爬行的網址
下載網址的文本,然後用正則表達式提取出電子郵件地址
我習慣用c#,做過類似的東西。
需要幫助的話加我的QQ:12880764

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

前言
大家在平時或多或少地都會有編寫網路爬蟲的需求。一般來說,編寫爬蟲的首選自然非python莫屬,除此之外,java等語言也是不錯的選擇。選擇上述語言的原因不僅僅在於它們均有非常不錯的網路請求庫和字元串處理庫,還在於基於上述語言的爬蟲框架非常之多和完善。良好的爬蟲框架可以確保爬蟲程序的穩定性,以及編寫程序的便捷性。所以,這個cspider爬蟲庫的使命在於,我們能夠使用c語言,依然能夠優雅地編寫爬蟲程序。
爬蟲的特性
配置方便。使用一句設置函數,即可定義user agent,cookie,timeout,proxy以及抓取線程和解析線程的最大數量。
程序邏輯獨立。用戶可以分別定義爬蟲的解析函數,和數據持久化函數。並且對於解析到的新url,用戶可以使用cspider提供的addUrl函數,將其加入到任務隊列中。
便捷的字元串處理。cspider中提供了基於pcre的簡單的正則表達式函數,基於libxml2的xpath解析函數,以及用於解析json的cJSON庫。
高效的抓取。cspider基於libuv調度抓取線程和解析線程,使用curl作為其網路請求庫。
使用cspider的步驟
獲取cspider_t。
自定義user agent,cookie,timeout,proxy以及抓取線程和解析線程的最大數量。
添加初始要抓取的url到任務隊列。
編寫解析函數和數據持久化函數。
啟動爬蟲。
例子
先來看下簡單的爬蟲例子,會在後面詳細講解例子。
#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, "//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; [email protected]; 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)即可啟動爬蟲。
具體的API參數可在這里查看
總結
趕快使用cspider爬蟲框架來編寫爬蟲吧!如果在使用過程中發現bug,歡迎反饋。

望採納,謝謝

Ⅳ 各種語言寫網路爬蟲有什麼優點缺點

我用 PHP 和 Python 都寫過爬蟲和正文提取程序。
最開始使用 PHP 所以先說說 PHP 的優點:
1.語言比較簡單,PHP 是非常隨意的一種語言。寫起來容易讓你把精力放在你要做的事情上,而不是各種語法規則等等。
2.各種功能模塊齊全,這里分兩部分:
1.網頁下載:curl 等擴展庫;
2.文檔解析:dom、xpath、tidy、各種轉碼工具,可能跟題主的問題不太一樣,我的爬蟲需要提取正文,所以需要很復雜的文本處理,所以各種方便的文本處理工具是我的大愛。;
總之容易上手。

缺點:
1.並發處理能力較弱:由於當時 PHP 沒有線程、進程功能,要想實現並發需要借用多路服用模型,PHP 使用的是 select 模型。實現其來比較麻煩,可能是因為水平問題我的程序經常出現一些錯誤,導致漏抓。

再說說 Python:
優點:
1.各種爬蟲框架,方便高效的下載網頁;
2.多線程、進程模型成熟穩定,爬蟲是一個典型的多任務處理場景,請求頁面時會有較長的延遲,總體來說更多的是等待。多線程或進程會更優化程序效率,提升整個系統下載和分析能力。
3.GAE 的支持,當初寫爬蟲的時候剛剛有 GAE,而且只支持 Python ,利用 GAE 創建的爬蟲幾乎免費,最多的時候我有近千個應用實例在工作。

缺點:
1.對不規范 HTML 適應能力差:舉個例子,如果一個頁面裡面同時有 GB18030 字元集的中文和 UTF-8 字元集的中文,Python 處理起來就沒有 PHP 那麼簡單,你自己需要做很多的判斷工作。當然這是提取正文時的麻煩。

Java 和 C++ 當時也考察過,相對腳本語言比較麻煩,所以放棄。

總之,如果開發一個小規模的爬蟲腳本語言是個各方面比較有優勢的語言。如果要開發一個復雜的爬蟲系統可能 Java 是個增加選項, C++ 我感覺寫個模塊之類的更加適合。對於一個爬蟲系統來說,下載和內文解析只是基本的兩個功能。真正好的系統還包括完善的任務調度、監控、存儲、頁面數據保存和更新邏輯、排重等等。爬蟲是一個耗費帶寬的應用,好的設計會節約大量的帶寬和伺服器資源,並且好壞差距很大。

Ⅳ 怎麼在DOS下用C語言寫網路爬蟲

  • 獲取cspider_t。

  • 自定義user agent,cookie,timeout,proxy以及抓取線程和解析線程的最大數量。

  • 添加初始要抓取的url到任務隊列。

  • 編寫解析函數和數據持久化函數。

  • 啟動爬蟲。

  • 例子

    先來看下簡單的爬蟲例子,會在後面詳細講解例子。

  • #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, "//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 ", 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; [email protected]; 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);

  • }

Ⅵ c語言可以寫網路程序嗎

C語言編程思想落後?只是不時髦而已。
有關windows
的API都是C格式的,完全可以使用C寫出網路程序。
不過在寫之前,還有很長的路要走。相關技術比較復雜。

Ⅶ 我想用c編寫一個爬蟲程序,可是看完一本c語言教程後,還是覺得只會編寫一些計算類的小代碼,要學會編寫

C++開發難度而言會大一些。你可以學學比如Python之類的,爬蟲找到好用的庫,沒多久就能做好了。

Ⅷ C語言能寫一個訪問網站的程序嗎

你要的是一個瀏覽器吧。 一個網址的內容被下下來是一堆源碼,要是能達到在網頁上點擊,輸入字元,點確定的功能,需要瀏覽器的展現,渲染,執行JavaScript等,你說的不就是一個瀏覽器嗎

Ⅸ 為什麼c語言不適合寫爬蟲

開發效率低