如何使用c++語言進行數據抓取?

sprintf(buff,"%s%d%s",str1,number,str2);

f&<&將每個所需數據的URL寫進一個txt里了,目前想使用函數下載URL上的數據,在網路上找了一個下午還是沒有一點頭緒,不知道知乎可有大神願為小弟解答


C++語言規範里沒有網路這個概念,更沒有網路庫,所以嚴格意義上來說,「用C++語言進行數據抓取」這個命題的答案是「不可能」。這相當於「用英語怎麼證明三角形的內角和是180度」。

假如把問題改為「在C++程序中進行數據抓取」,那麼答案就多了,因為C++程序可以調用的網路代碼非常多,從操作系統的API到.Net和Java的程序都有。就算把代碼限定在C++,可選的類庫仍舊有不少,比如就算是搞一個畫界面的庫, @vczh 都把WinHttp封了一個網路層出來。不過既然題目限定了只支持Windows平台的Visual C++,那麼你可以直接調用URLDownloadToFile,一個函數就可以搞定數據下載。

下面列出一些比較熱門的跨平台C++ 網路庫(注意熱門並不代表就適合你的使用場景)。

  • curlpp 這個是libcurl的C++封裝
  • C++ REST SDK Visual C++項目組出的跨平台網路庫
  • qt裡面的QHttp類,前提當然是你的項目用qt
  • Boost.Asio
  • POCO 裡面的HttpClientSession


我有一個類剛好可以給你用,你可以在我的代碼裡面找/Libraries/GacUI/Public/Source/Vlpp.h/cpp,裡面有vl::HttpRequest/HttpResponse。

如果你不想直接把代碼拿過去的話,你可以參考我的做法,源碼在此:

Gac Library -- C++ Utilities for GPU Accelerated GUI and Script


Qt

Network模塊就夠你下載用的了、、

如果還要分析html,可以用dom模塊,或者用webkit模塊、、


用腳本語言應該更簡單哦。


將所輸出的URL全部寫入到一個文檔中,之前電腦上有個虛擬機,裝了個Ubuntu系統,在Ubuntu系統上使用linux的wget命令,可下載數據,所需學的也少,一些linux的操作而已,我就用了

cd url2

ls

wget -i url.txt


c++ libcurl或者python urllib2


推薦閱讀:

zhihu-oauth 能否快速判斷兩個用戶(非登錄用戶)之間的關注關係?
前嗅的這款數據採集軟體和像八爪魚這類的軟體有什麼區別,優勢在哪?
新浪微博數據抓取方法有哪些?
App中的數據可以用網路爬蟲抓取么?

TAG:URL | C | VisualC | 數據抓取 |