功能有待完善和添加
#include <iostream> #include <ctime> #include <cstring> #include <string> #include <fstream> #include <sstream> #include <cstdlib> using namespace std; //通过Wget来获取网页 string GetHtmlByWget(string url) { //获取待下载网页文件名 string fileName = url.substr((int)url.find_last_of("/") + 1); if(fileName != "") { string strCom = "wget -q "; //wget命令,-q表示不显示下载信息 strCom.append(url); system(strCom.c_str()); //执行wget ifstream fin(fileName.c_str()); if(!fin) { return ""; } string strHtml = ""; char chTemp[1024] = ""; //读取网页文件到内存中 while(fin.getline(chTemp , 1024)) { strHtml.append(string(chTemp)); strcpy(chTemp , ""); } fin.close(); strCom = "del -f "; //删除文件命令,-f表示直接删除不做任何提示 strCom.append(fileName); system(strCom.c_str()); //删除刚才下载下来的文件 return strHtml; //返回网页源码 } else { return ""; } } string GetHtmlPath(int y, int m, int d) { stringstream str; string now; string path = "http://www.nod32jihuoma.cn/nod32-id/"; str << y + 1900; str >> now; path.append(now); path.append("-"); now.clear(); str.clear(); int month = m + 1; if(month / 10 == 0) { str << 0; str >> now; path.append(now); now.clear(); str.clear(); } str << month; str >> now; path.append(now); path.append("-"); now.clear(); str.clear(); int day = d; if(day / 10 == 0) { str << 0; str >> now; path.append(now); now.clear(); str.clear(); } str << day; str >> now; path.append(now); path.append(".html"); now.clear(); str.clear(); return path; } void SearchData(int n) { ofstream cout("key.txt"); const string key = "<div>用户名:";//13 const string value = " 密 码:";//14 time_t t = time(NULL); struct tm* cur = localtime(&t); int y = cur->tm_year; int m = cur->tm_mon; int d = cur->tm_mday; for(int i = 0 ; i < n; i++) { int dd = d - i; string path = GetHtmlPath(y, m, dd); cout << "获取网址" << "\n" << path << endl; string data = GetHtmlByWget(path); //cout << data << endl; cout << y + 1900 << "年" << m + 1 << "月" << dd << "日 " << endl; cout << "用户名: 密码:" <<endl; for(size_t pos = 0; pos < data.size(); pos++) { size_t t = data.find(key,pos); if(t == string::npos) break; t += 13; for(int i = 1; i <= 14; i++,t++) { cout << data[t]; } cout << " "; t += 14; for(int i = 1; i <= 10; i++,t++) { cout << data[t]; } pos = t; cout << endl; } } cout.close(); } int main() { SearchData(2); string str; ifstream fin("key.txt"); while(fin) { getline(fin,str); cout << str << endl; str.clear(); } fin.close(); return 0; }
效果图:
由于获取NOD32激活码的网址更改为http://www.nod32jihuoma.cn/nod32-id/index.html
即不需要网址最后的时间的处理了,变得更加简单化
相应的代码更改为:
#include <iostream> #include <ctime> #include <cstring> #include <string> #include <fstream> #include <sstream> #include <cstdlib> #include <afxinet.h> using namespace std; string GetHtml(CString url) { CString content; CString data; DWORD dwStatusCode; CInternetSession session("HttpClient"); CHttpFile* pfile = (CHttpFile *)session.OpenURL(url); pfile -> QueryInfoStatusCode(dwStatusCode); if(dwStatusCode == HTTP_STATUS_OK) { while (pfile -> ReadString(data)) { content += data; } } pfile -> Close(); delete pfile; session.Close(); return string(content.GetBuffer(content.GetLength())); } void SearchData() { ofstream cout("key.txt"); const string key = "</p><p>用户名:";//15 const string value = " 密 码:";//14 time_t t = time(NULL); struct tm* cur = localtime(&t); int y = cur->tm_year; int m = cur->tm_mon; int d = cur->tm_mday; string path = "http://www.nod32jihuoma.cn/nod32-id/index.html"; cout << "获取网址" << "\n" << path << endl; CString url; url.Format("%s",path.c_str()); string data = GetHtml(url); //cout << data << endl; cout << y + 1900 << "年" << m + 1 << "月" << d << "日 " << endl; cout << "用户名: 密码:" <<endl; for(size_t pos = 0; pos < data.size(); pos++) { size_t t = data.find(key,pos); if(t == string::npos) break; t += 15; for(int i = 1; i <= 14; i++,t++) { cout << data[t]; } cout << " "; t += 14; for(int i = 1; i <= 10; i++,t++) { cout << data[t]; } pos = t; cout << endl; } cout.close(); } int main() { SearchData(); string str; ifstream fin("key.txt"); while(fin) { getline(fin,str); cout << str << endl; str.clear(); } fin.close(); system("pause"); return 0; }
http://www.nod32jihuoma.cn/nod32-id/index.html
#include <iostream> #include <ctime> #include <cstring> #include <string> #include <fstream> #include <sstream> #include <cstdlib> using namespace std; //通过Wget来获取网页 string GetHtmlByWget(string url) { //获取待下载网页文件名 string fileName = url.substr((int)url.find_last_of("/") + 1); if(fileName != "") { string strCom = "wget -q "; //wget命令,-q表示不显示下载信息 strCom.append(url); system(strCom.c_str()); //执行wget ifstream fin(fileName.c_str()); if(!fin) { return ""; } string strHtml = ""; char chTemp[1024] = ""; //读取网页文件到内存中 while(fin.getline(chTemp , 1024)) { strHtml.append(string(chTemp)); strcpy(chTemp , ""); } fin.close(); strCom = "del -f "; //删除文件命令,-f表示直接删除不做任何提示 strCom.append(fileName); system(strCom.c_str()); //删除刚才下载下来的文件 return strHtml; //返回网页源码 } else { return ""; } } void SearchData() { ofstream cout("key.txt"); const string key = "</p><p>用户名:";//15 const string value = " 密 码:";//14 time_t t = time(NULL); struct tm* cur = localtime(&t); int y = cur->tm_year; int m = cur->tm_mon; int d = cur->tm_mday; string path = "http://www.nod32jihuoma.cn/nod32-id/index.html"; cout << "获取网址" << "\n" << path << endl; string data = GetHtmlByWget(path); //cout << data << endl; cout << y + 1900 << "年" << m + 1 << "月" << d << "日 " << endl; cout << "用户名: 密码:" <<endl; for(size_t pos = 0; pos < data.size(); pos++) { size_t t = data.find(key,pos); if(t == string::npos) break; t += 15; for(int i = 1; i <= 14; i++,t++) { cout << data[t]; } cout << " "; t += 14; for(int i = 1; i <= 10; i++,t++) { cout << data[t]; } pos = t; cout << endl; } cout.close(); } int main() { SearchData(); string str; ifstream fin("key.txt"); while(fin) { getline(fin,str); cout << str << endl; str.clear(); } fin.close(); system("pause"); return 0; }