作者:
liu2007 (è–¯)
2021-12-11 12:12:54我的開發平台是 win7
工具是QT Creator
版本是Qt Core 5.15.2
我用QNetworkReply 去收網頁內容並且分析
網頁是很固定的純文字內容
本來爬得很順利的
以下是程式碼
m_PageRequest.setUrl(QUrl{urlString});
QNetworkReply *reply = m_Manager.get(m_PageRequest);
QEventLoop event_loop;
QObject::connect(reply, SIGNAL(finished()), &event_loop, SLOT(quit()));
event_loop.exec();
QString headLine{reply->readLine()};
if(headLine.contains(SUCCESSED_HEADLINE)){
for(int i{0};i<23;i++) //我要的資料在剩下的第24行
reply->readLine();
QString raw{reply->readLine()};
parse(raw);
}
但是網頁的文字裡面包含某一個特定的名字的時候
程式就會出錯。
這個名字從網頁看起來只有三個字 XXX
把它複製上PTT來看也的只有三個字 XXX
但是在chorme的檢視網頁原始碼裡面就變成 XX X
中間空了一個空白
https://imgur.com/rH0j2nP
左邊/uploader/後面那一串就是他的名字網頁編碼
本來正常情況下uploader後面還有資料是我需要的
但是只要遇到這個名字,字串卻只有到名字中間的空白,空白後面的資料都沒了
本來以為是跑到下一行,但並沒有。
現在文章打到一半我在想是不是
QString raw{reply->readLine()};
在readLine() 的資料轉換成 QString的時候,把那個空白當作結束符號
後面的就沒有copy到raw 這個QString裡面了