新华字典数据获取方法2

这种方法是使用C++来进行获取的。

 

主要原理:新华字典网站数据采集,使用Qt的网络模块进行处理。

 

准备:

网站:http://xh.5156edu.com/pinyi.html

工具:Qt5.4.1

 

核心部分源码:

 1 bool QMyNetwork::GetHtmlContent1(const QString &fHtmlUrl)
 2 {
 3 
 4 #ifdef _DEBUG
 5     qDebug() << "Start::GetHtmlContent1 >> " << QTime::currentTime().toString("HH:mm:ss:zzz");
 6 #endif //_DEBUG
 7 
 8     QNetworkAccessManager *lpManager = new QNetworkAccessManager(this);
 9     QNetworkReply *lpReply = lpManager->get(QNetworkRequest(QUrl(fHtmlUrl)));
10     QEventLoop _Loop;
11     connect(lpManager, SIGNAL(finished(QNetworkReply*)), &_Loop, SLOT(quit()));
12     _Loop.exec();       //block until finish
13 
14     /////////////////////TESTING START/////////////////////////////////////////////
15 
16 //    QByteArray l_test_1 = lpReply->readAll();
17 
18     /////////////////////TESTING END///////////////////////////////////////////////
19 
20     mHtmlContent1 = QString::fromLocal8Bit(lpReply->readAll());
21     if (mHtmlContent1.size() == 0) return false;
22 
23 //    this->PrintfContent1();
24 
25 #ifdef _DEBUG
26     qDebug() << "End::GetHtmlContent1 >> " << QTime::currentTime().toString("HH:mm:ss:zzz");
27 #endif //_DEBUG
28 
29     return true;
30 }

 

剩下的部分基本是对字符串的处理,有人会有疑问,C++字符串处理能力强吗,以前我不敢肯定,现在我确信强,因为Qt里面引用了QRegExp模块,正则一出谁与争锋的感觉就是这样。

感兴趣的可以看看新华字典的获取源码,这里,提供下载完整源码。

 

*注:看似字符串处理繁琐,但是熟练之后却也是一番收获,因为字符串处理是程序中必要的一个环节。

 

posted @ 2015-04-27 16:06  仙人球球  Views(645)  Comments(0Edit  收藏  举报