實時匯率轉換小程式(c 爬蟲)

2021-08-31 13:45:27 字數 4484 閱讀 7105

利用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 將整數...