这两天帮朋友开发个搜索邮箱器,略有收获,其中也学习到不少的知识 ,做下总结
前言
在销售过程中,获取客户资料很重要,在互联网时代,客户的邮箱能很方便的和客户取得直接的联系,因此采用电子邮件来销售不失为一种低成本和高效率的销售途径,因为如果要想获得潜在客户的邮箱又困难重重,但由于baidu,google等搜索引擎能很好的搜索到各种需要的资源,因此通过对这些搜索引擎的结果进行过滤,便能很好的找到潜在客户的邮件地址。基于这种想法来开发邮箱搜索,必须要解决好以下几个关键技术点
1. 怎么样向百度后台发送关键字?
向百度网页发送关键字,可以用以下的格式发送
strPattern + strKeywords + strPostfix // 前缀+关键字+后缀
示例:
CString strPattern = " http://www.baidu.com/baidu?word= " ; // 如果想百度发送搜索网页的关键字,固定的以这种方式
CString strPostfix = " &tn=kf01bf_pg " ; // 发送时需要的必要后缀
CString strKeywods = " @sian.com " ; // 要搜索的关键字
CString strWebSite = strPattern + strKeywords + strPostfix;
webbrowser.Navigate(strWebSite);
strPattern + strKeywords + strPostfix // 前缀+关键字+后缀
示例:
CString strPattern = " http://www.baidu.com/baidu?word= " ; // 如果想百度发送搜索网页的关键字,固定的以这种方式
CString strPostfix = " &tn=kf01bf_pg " ; // 发送时需要的必要后缀
CString strKeywods = " @sian.com " ; // 要搜索的关键字
CString strWebSite = strPattern + strKeywords + strPostfix;
webbrowser.Navigate(strWebSite);
2. 怎么样通过webbrowser获取html源文件?
//
当navigate后,html下载到本地后,会触发浏览器DocumentComplete事件,在这个事件中我们来获取html源文件
void CEmailSearcherDlg::OnDocumentCompleteExplorer1(LPDISPATCH pDisp1, VARIANT FAR * URL)
... {
const long htmlLen = 1024 * 200;
LPDISPATCH pDisp = 0;
IPersistStreamInit *pPSI=NULL;
IHTMLDocument2* pHTMLDocument = 0;
IStream *pStream=NULL;
HGLOBAL hHTMLText;
pDisp = m_Web.GetDocument();
if (!pDisp)
return;
if (FAILED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDocument)))
return;
if (FAILED(pHTMLDocument->QueryInterface(&pPSI)))
return;
hHTMLText = GlobalAlloc(GMEM_FIXED, htmlLen);
CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream);
pPSI->Save(pStream, FALSE);
char *pText = (char*)hHTMLText;
// pText已经是html文件流,这里直接可以进行筛选动作
// 这里就省略了...
pStream->Release();
pPSI->Release();
pDisp->Release();
}
void CEmailSearcherDlg::OnDocumentCompleteExplorer1(LPDISPATCH pDisp1, VARIANT FAR * URL)
... {
const long htmlLen = 1024 * 200;
LPDISPATCH pDisp = 0;
IPersistStreamInit *pPSI=NULL;
IHTMLDocument2* pHTMLDocument = 0;
IStream *pStream=NULL;
HGLOBAL hHTMLText;
pDisp = m_Web.GetDocument();
if (!pDisp)
return;
if (FAILED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDocument)))
return;
if (FAILED(pHTMLDocument->QueryInterface(&pPSI)))
return;
hHTMLText = GlobalAlloc(GMEM_FIXED, htmlLen);
CreateStreamOnHGlobal(hHTMLText, TRUE, &pStream);
pPSI->Save(pStream, FALSE);
char *pText = (char*)hHTMLText;
// pText已经是html文件流,这里直接可以进行筛选动作
// 这里就省略了...
pStream->Release();
pPSI->Release();
pDisp->Release();
}
3.怎么样高效的进行字符的查找,替换和筛选?
利用正则表达式能够高效的进行字符串的操作处理,关于正则表达式,请看我的另一篇文章“正则表达式”