首页 > 代码库 > 网页爬虫WebCrawler(2)-Utilities
网页爬虫WebCrawler(2)-Utilities
在网页爬虫的实现过程中还涉及了一些基本的功能函数,例如获取系统的当前时间函数,进程休眠和字符串替换函数等。
我们将这些多次调用的与过程无关的函数写成一个类Utilities。
Code:
/////Utilities.h//*************************//与操作系统相关的函数//*************************#ifndef Utilities_H#define Utilities_H#if defined(WIN32) #include <Windows.h>#else #include <sys/utime.h>#endif#include <stdio.h>#include <time.h>#include <string>#include <iostream>#include <sstream>#include <fstream>class Utilities{public: static void GetSystemTime(std::string& sdateStr,std::string& stimeStr); static void StringSearchAndReplace(std::string& sourceStr,std::string toReplace,std::string withThisStr); static bool Sleep(long lTimeMsecs); static void find_and_replace(std::string &source,const std::string find,std::string replace); static std::string replaceAll(const std::string& s,const std::string& f,const std::string& r);};#endif
//////Utilities.cpp#include "Utilities.h"void Utilities::GetSystemTime(std::string& sdateStr,std::string& stimeStr){ char dateStr[9]; char timeStr[9]; sdateStr=_strdate(dateStr); stimeStr=_strtime(timeStr);}void Utilities::StringSearchAndReplace(std::string& sourceStr,std::string toReplace,std::string withThisStr){ std::string::size_type idx=0; while(true) { idx=sourceStr.find(toReplace,idx); if(idx==std::string::npos) break; sourceStr.replace(idx,toReplace.size(),withThisStr); idx+=withThisStr.length(); }}bool Utilities::Sleep(long lTimeMsecs){#if defined(WIN32) ::Sleep(lTimeMsecs); return (true);#else timeval tv; tv.tv_sec=lTimeMsecs/1000; tv.tv_usec=(lTimeMsecs%1000)*1000; if(::select(0,0,0,0,&tv)==-1) return (false); else return (true);#endif}void Utilities::find_and_replace(std::string& source,const std::string find, std::string replace){ size_t j; for(;(j=source.find(find))!=std::string::npos;) source.replace(j,find.length(),replace);}std::string Utilities::replaceAll(const std::string& s,const std::string& f,const std::string& r){ if(s.empty()|| f.empty()|| f==r ||s.find(f)==std::string::npos) return s; std::ostringstream build_it; size_t i=0; for(size_t pos;(pos=s.find(f,i))!=std::string::npos;) { build_it.write(&s[i],pos-i); build_it<<r; i=pos+f.size(); } if(i!=s.size()) build_it.write(&s[i],s.size()-i); return build_it.str();}
网页爬虫WebCrawler(2)-Utilities
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。