新华字典数据获取方法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模块,正则一出谁与争锋的感觉就是这样。

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

 

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

 

你可能感兴趣的:(方法)