利用c++網路爬蟲爬取網頁的實時匯率進行匯率的轉換!
其中也利用了qt進行了頁面設計!
#define _silence_stdext_hash_deprecation_warnings
#include #include #include #include #include "winsock2.h"
#include #include #include #pragma comment(lib, "ws2_32.lib")
#pragma warning(disable : 4996)
using namespace std;
#define default_page_buf_size 1048576
queuehrefurl;
hash_setvisitedurl;
hash_setvisitedimg;
int depth = 0;
int g_imgcnt = 1;
//解析url,解析出主機名,資源名
}//使用get請求,得到響應
//建立socket
struct hostent *hp = gethostbyname(host.c_str());
if (hp == null)
socket sock = socket(af_inet, sock_stream,
ipproto_tcp);
if (sock == -1 || sock == -2)
//建立伺服器位址
sockaddr_in sa;
sa.sin_family = af_inet;
sa.sin_port = htons(80); //char addr[5];
//memcpy( addr, hp->h_addr, 4 );
= inet_addr(hp->h_addr);
memcpy(&sa.sin_addr, hp->h_addr, 4);
//建立連線
if (0 != connect(sock, (sockaddr*)&sa, sizeof(sa)))
; //準備傳送資料
//傳送資料
if (socket_error == send(sock, request.c_str(),
request.size(), 0))
//接收資料
int m_ncontentlength = default_page_buf_size;
char *pagebuf = (char *)malloc(m_ncontentlength);
memset(pagebuf, 0, m_ncontentlength);
bytesread = 0;
int ret = 1;
//cout << "read: ";
while (ret > 0)
if (m_ncontentlength - bytesread<100)
//cout << ret << " ";
} //cout << endl;
pagebuf[bytesread] = '\0';
response = pagebuf;
closesocket(sock);
return true;
//cout<< response
const string &host)
pos = strstr(pos, tag);
delete url; // 釋放掉申請的記憶體
} }ofile << endl << endl;
ofile.close();
tag = "
const char* att1 = "src=\"";
const char* att2 = "lazy-src=\"";
const char *pos0 = strstr(p, tag);
while (pos0)
else
}else
const char * nextq = strstr(pos, "\"");
if (nextq)
pos0 = strstr(pos0, tag);
delete url;
} }//cout << "end of parse this html" << endl;
}//把url轉化為檔名
string tofilename(const string &url)
return filename.substr(0, k) + ".txt";
}void downloadimg(vector& imgurls,
const string &url)
//cout << "can not create directory:"
//<< foldname << endl;
char *image;
int byteread;
for (int i = 0; iimgurls;
//解析該網頁的所有鏈結,放入imgurls裡面
// 遍歷的起始位址
string urlstart = "";
// 使用廣度遍歷
// 提取網頁中的超連結放入hrefurl中,
bfs(urlstart);
// 訪問過的**儲存起來
網頁爬蟲小程式
乙個簡單的網頁爬蟲程式 網頁爬蟲 得到網頁上的郵箱位址 得到網頁上的時間戳 public class regexdemo d d d webcrawler url 1,reg 1 得到網頁上的郵箱位址 webcrawler url 2,reg 2 得到網頁上的時間戳 param str param ...
爬蟲小程式(二)
迫於課程設計的需要,簡單的抓取了一下歷史 的的一些歷史資訊 點開每乙個鏈結後會出現詳細的資訊頁 抓下來寫入csv檔案即可 由於這裡幾乎沒有什麼反爬蟲機制,所以很容易 import requests from lxml import etree import csv import codecs imp...
小程式 轉換
二進位制字串轉整數 二進位制字串轉整數 如 01111111 127 function binarystrtobyte binarystr var len,re 0 len binarystr.length if len 4 len 8 return parseint binarystr,2 將整數...