91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 564KB
    文件類型: .7z
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-24
  • 語言: C/C++
  • 標簽: C++、libcur??

資源簡介

C++版本的百度搜索爬蟲(獲取搜索結果頁面信息的真實子鏈接),使用到了正則、libcurl、libcurl解析http頭部中包含的跳轉鏈接

資源截圖

代碼片段和文件信息

#include?“stdafx.h“
#include?“Crawler.h“

#ifdef?_DEBUG
#pragma?comment(lib?“libcurld_imp.lib“)
#pragma?comment(lib?“libcurld.lib“)
#else
#pragma?comment(lib?“libcurl_imp.lib“)
#pragma?comment(lib?“libcurl.lib“)
#endif

CCrawler::CCrawler()
{
m_status?=?-1;

m_curl?=?curl_easy_init();
}

CCrawler::~CCrawler()
{
if?(?m_curl?)
{
curl_easy_cleanup(m_curl);
m_curl?=?NULL;
}
}

//?處理HTTP?SERVER返回頭部信息...
//?如果返回的頭部信息中有多行,則會調用多次
static?size_t?header_callback_baidu(void?*ptr?size_t?size?size_t?nmemb?void?*userdata)
{
CString?*pstr?=?(CString?*)userdata;
if?(?strncmp((const?char?*)ptr?“Location:?“?strlen(“Location:?“))?==?0?)
{
CString?tmp;
tmp?=?CString((const?char?*)ptr);
tmp.Replace(?“Location:?“??““?);
*pstr?=?tmp;
}

return?size?*?nmemb;
}

//?獲取內容
static?size_t?write_callback(?char?*ptr?size_t?size?size_t?nmemb?void?*userdata)
{
//PCrawlerWriteData?pcwd?=?static_cast(userdata);
//size_t?len?=?size?*?nmemb;
string&?buffer?= *(static_cast(userdata));
size_t?len?=?size?*?nmemb;
for(size_t?i?=?0;?i {
buffer?+=?*ptr;
++ptr;
}
return?len;
}

bool?CCrawler::Crawler_baidu(CrawlerArgs?&ca?getMode?fMode?string?&strContent?)
{
CString?strRefer;
//CrawlerWriteData cwd;
int?delay?=?0curtime?=?0failret?=?-10;
int?nRedirectTimes?=?0;
CString?strRealUrl;

if(!m_curl)
{
return?false;
}

//?設置URL
curl_easy_setopt(m_curl?CURLOPT_URL?ca.strUrl);

//?如果是SSL網站,不對SSL網站的證書進行驗證
curl_easy_setopt(m_curl?CURLOPT_SSL_VERIFYPEER?0L);
curl_easy_setopt(m_curl?CURLOPT_SSL_VERIFYHOST?0L);

//自動調轉
curl_easy_setopt(m_curl?CURLOPT_FOLLOWLOCATION?1);

//?超時設置
curl_easy_setopt(m_curl?CURLOPT_TIMEOUT?CRALWER_TIMEOUT);

//curl_easy_setopt(m_curl?CURLOPT_FOLLOWLOCATION?1);?

//?設置頭
curl_slist?*chunk?=?NULL;
chunk?=?curl_slist_append(?chunk?“Accept:?text/html?application/xhtml+xml?*/*“?);??
chunk?=?curl_slist_append(?chunk?“Accept-Language:?zh-CN“?);?
chunk?=?curl_slist_append(?chunk?“User-Agent:?Mozilla/5.0?(Windows?NT?6.1)?AppleWebKit/535.7?(KHTML?like?Gecko)“?);?
chunk?=?curl_slist_append(?chunk?“Accept-Encoding:?gzip?deflate“?);?
chunk?=?curl_slist_append(?chunk?“Connection:?keep-alive“?);

if?(?fMode?==?CONTENT?)
{
strRefer.Format(_T(“Referer:?%s“)?ca.strReferUrl);
chunk?=?curl_slist_append(?chunk?strRefer.GetBuffer()?);

//?設置讀取HTTP返回內容的回調函數
curl_easy_setopt(m_curl?CURLOPT_WRITEFUNCTION?write_callback);

//?設置回調函數的參數,見write_callback函數的最后一個參數
curl_easy_setopt(m_curl?CURLOPT_WRITEDATA?&strContent);
}
else?if?(?fMode?==?HEAD?)
{
/*?we?want?the?headers?to?this?file?handle?*/?
curl_easy_setopt(m_curl?CURLOPT_HEADERFUNCTION?header_callback_baidu);

//設置回調函數的參數,見header_callback_baidu函數的最后一個參數
curl_easy_setopt(m_curl?CURLOPT_HEADERDATA?&(ca.strRealUrl));
}

curl_easy_setopt(?m_curl?CURLOPT_HTTPHEADER?chunk?

評論

共有 條評論

相關資源