日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ curl 超时_cc++写网络爬虫,curl+gumbo配合使用

發(fā)布時(shí)間:2024/8/23 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ curl 超时_cc++写网络爬虫,curl+gumbo配合使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

是的,你沒有聽錯(cuò)。就是用c++或者說c語言寫爬蟲。

其實(shí)不難,雖然沒有Python寫起來那么簡單。但是也不是那么復(fù)雜啦,畢竟好多大佬都寫了那么多庫,我們只要會(huì)用大佬寫的庫就行。

網(wǎng)址:https://acm.sjtu.edu.cn/OnlineJudge/status

我們就爬取這個(gè)頁面的評(píng)審狀態(tài)的所有內(nèi)容。

代碼如下:

iostreamfstream c.nodeNum(); i++)\n\t{\n\t\tfor (int j = 0; j > c.nodeAt(i).childNum(); j++)\n\t\t{\n\t\t\tCNode nd = c.nodeAt(i).childAt(j);\n\t\t\tcout >> MyStringFormat::UTF_82ASCII(nd.text()).c_str() >> \" \";\n\t\t}\n\t\tcout >> endl;\n\t}\n}\n\nstatic size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid)\n{\n\tstring* str = dynamic_cast>string*#include #include #include "gumbo/Document.h"#include "gumbo/Node.h"#include "MyStringFormat.h"#include "curl/curl.h"using namespace std;#define URL_REFERER "https://acm.sjtu.edu.cn/OnlineJudge/"void printFunc(string page){ CDocument doc; doc.parse(page.c_str()); CSelection c = doc.find("#status tr"); for (int i = 0; i < c.nodeNum(); i++) { for (int j = 0; j < c.nodeAt(i).childNum(); j++) { CNode nd = c.nodeAt(i).childAt(j); cout << MyStringFormat::UTF_82ASCII(nd.text()).c_str() << " "; } cout << endl; }}static size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid){ string* str = dynamic_cast<string*>((string *)lpVoid); if (NULL == str || NULL == buffer) { return -1; } char* pData = (char*)buffer; str->append(pData, size * nmemb); return nmemb;}bool HttpRequest(const char* url, string& strResponse, bool get/* = true*/, const char* headers/* = NULL*/, const char* postdata/* = NULL*/, bool bReserveHeaders/* = false*/, int timeout/* = 10*/){ CURLcode res; CURL* curl = curl_easy_init(); if (NULL == curl) { return false; } curl_easy_setopt(curl, CURLOPT_URL, url); //響應(yīng)結(jié)果中保留頭部信息 if (bReserveHeaders) curl_easy_setopt(curl, CURLOPT_HEADER, 1); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse); curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); //設(shè)定為不驗(yàn)證證書和HOST //curl_easy_setopt(curl, CURLOPT_PROXY, "127.0.0.1:8888");//設(shè)置代理 //curl_easy_setopt(curl, CURLOPT_PROXYPORT, 9999); //代理服務(wù)器端口 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false); //設(shè)置超時(shí)時(shí)間 curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, timeout); curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout); curl_easy_setopt(curl, CURLOPT_REFERER, URL_REFERER); curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"); //不設(shè)置接收的編碼格式或者設(shè)置為空,libcurl會(huì)自動(dòng)解壓壓縮的格式,如gzip //curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "gzip, deflate, br"); //設(shè)置hostConnection: Keep-Alive struct curl_slist *chunk = NULL; chunk = curl_slist_append(chunk, "Host: acm.sjtu.edu.cn"); chunk = curl_slist_append(chunk, "Connection: Keep-Alive"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); //添加自定義頭信息 if (headers != NULL) { chunk = curl_slist_append(chunk, headers); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); } if (!get && postdata != NULL) { curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); } res = curl_easy_perform(curl); bool bError = false; if (res == CURLE_OK) { int code; res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code); if (code != 200 && code != 302) { bError = true; } } else { bError = true; } curl_easy_cleanup(curl); return !bError;}int main(int argc, char * argv[]){ string response; HttpRequest("https://acm.sjtu.edu.cn/OnlineJudge/status", response, true, NULL, NULL, false, 10); printFunc(response); system("pause"); return 0;}

我知道,我貼出這些代碼,也沒法運(yùn)行,所以我把工程文件也發(fā)出來。為了不被大家說我騙積分,我的所有東西都貼出百度云鏈接。

鏈接:https://pan.baidu.com/s/1jBZ-6tT-4ne0uTMw4jFvKA?
提取碼:pmg6?

喜歡的歡迎關(guān)注我的公眾號(hào),歡迎關(guān)注我的csdn:wu_lian_nan

總結(jié)

以上是生活随笔為你收集整理的c++ curl 超时_cc++写网络爬虫,curl+gumbo配合使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人aaaaⅴ片在线看 | 一级欧美视频 | 黄色永久视频 | 大桥未久中文字幕 | 波多野结衣一区二区三区中文字幕 | 国产人妻互换一区二区 | 日本免费专区 | 欧美视频一区二区三区四区 | 日本在线观看www | 久久av在线播放 | 四虎国产成人精品免费一女五男 | 伊人春色视频 | 欧美色拍| 一级黄色a| 亚洲第一色区 | 狼干综合| av免费成人 | 成人一区二区在线 | 精品视频一二 | 精品自拍一区 | 日本学生初尝黑人巨免费视频 | 夜夜爱av | 日韩欧美精品一区二区三区 | 国产区精品在线观看 | 国产少妇自拍 | 在线成人日韩 | 亚洲一级大片 | 久久亚洲日本 | 91超碰在线免费观看 | 日韩一级| 蜜臀视频在线观看 | 国产91在线精品 | 不用播放器的av网站 | h视频网站在线观看 | 国产香蕉网 | 欧美在线性爱视频 | 国产suv精品一区二区三区 | 视频一区二区三 | 自拍偷拍另类 | 91丨porny丨 | 亚洲看片 | 青青草手机在线视频 | 亚洲一区二区三区麻豆 | 国产伦精品视频一区二区三区 | 国产成人精品999在线观看 | 波多野吉衣视频在线观看 | 日韩精品一区二区三区 | 美女视频黄a视频全免费观看 | 人人曰| 亚州av影院 | 日日弄天天弄美女bbbb | 亚洲欧美日韩系列 | 偷拍亚洲另类 | 大地资源影视在线播放观看高清视频 | 亚洲精品在线网站 | 日本高清视频免费看 | 亚洲黄色免费视频 | 黄色一级视频免费观看 | 中文字幕11页中文字幕11页 | 青青草视频在线免费观看 | 欧美一区二区三区 | 在线va视频| 国产主播在线观看 | 免费观看在线播放 | 中文在线中文资源 | 免费视频一区 | 亚洲一区二区三区四区在线 | 日本在线视频观看 | 8x国产一区二区三区精品推荐 | 国产第五页 | 日韩伦理中文字幕 | 欧美日韩中文视频 | av高潮 | 久草播放 | 2018天天弄 | 久久久精品免费看 | 午夜视频在线观看视频 | 国产精品videos | 国产一区在线免费观看 | 日本黄色录像片 | 亚洲24p| 久久久网| 欧美精品黑人猛交高潮 | 成人www| 日本高清www | 久久不卡区| 日批在线 | 色激情网| 二区三区av | 女性向小h片资源在线观看 日本天天操 | 18禁超污无遮挡无码免费游戏 | 不卡一区二区在线视频 | 国产精品麻豆一区二区三区 | 91精品婷婷国产综合久久蝌蚪 | 欧美性猛交ⅹxx乱大交 | 香蕉影音| 国产视频日本 | 高中男男gay互囗交观看 | 黄网站色视频免费观看 |