navernews 댓글 가져오기 수정

json형식 뒤에 이상한 문자들이 붙어있어서 오류를 일으킴

git-svn-id: svn://192.168.0.12/source@218 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2015-10-29 02:07:35 +00:00
parent b297d693d7
commit d48ec1fbcb
3 changed files with 37 additions and 4 deletions

View File

@@ -176,7 +176,7 @@ void SCrawler::saveResultNaverNews()
if (strlike.isEmpty() == false) strData += "\r\nlike(" + QString::number(strlike.toInt()) + ")"; if (strlike.isEmpty() == false) strData += "\r\nlike(" + QString::number(strlike.toInt()) + ")";
else else
{ {
Debug("out.html",m_page->mainFrame()->toHtml()); //Debug("out.html",m_page->mainFrame()->toHtml());
} }
element = Find(m_page->mainFrame()->documentElement(),"div","class","press_logo"); element = Find(m_page->mainFrame()->documentElement(),"div","class","press_logo");

View File

@@ -4,6 +4,9 @@
#include <QJsonArray> #include <QJsonArray>
#include <QHostInfo> #include <QHostInfo>
#include <iostream> #include <iostream>
#include <QFile>
#include <QTextStream>
using namespace std; using namespace std;
@@ -73,11 +76,21 @@ void SReplyGetManage::NaverNewsRun()
{ {
byArray += socket.readAll(); byArray += socket.readAll();
} }
/*
{
QFile raw("c:\\data\\rawnews.json");
raw.open(QFile::WriteOnly | QFile::Text);
QTextStream in(&raw);
in << QString(byArray);
raw.close();
}
*/
int index = byArray.indexOf("{"); int index = byArray.indexOf("{");
byArray=byArray.mid(index-2); byArray=byArray.mid(index-2);
bool bFlag = true; bool bFlag = true;
QString strOut; QString strOut;
while(bFlag) while(bFlag)
{ {
strOut += byArray.left(8188); strOut += byArray.left(8188);
@@ -88,7 +101,15 @@ void SReplyGetManage::NaverNewsRun()
strOut += byArray; strOut += byArray;
} }
} }
strOut = strOut.replace("\r\n","").replace("\n","");
strOut = strOut.replace("\r\n","").replace("\n","");
{
QRegExp re("\\}\\}[\\w\\s]*$");
strOut = strOut.replace(re,"}}");
}
QJsonParseError error; QJsonParseError error;
QJsonDocument d = QJsonDocument::fromJson(strOut.toUtf8(),&error); QJsonDocument d = QJsonDocument::fromJson(strOut.toUtf8(),&error);
if (error.error != 0) if (error.error != 0)
@@ -103,6 +124,7 @@ void SReplyGetManage::NaverNewsRun()
{ {
QJsonObject obj = value.toObject(); QJsonObject obj = value.toObject();
pReply[nCount].m_nReplyReplyCount = obj["replyCount"].toInt(); pReply[nCount].m_nReplyReplyCount = obj["replyCount"].toInt();
//qDebug() << "m_nReplyReply" << pReply[nCount].m_nReplyReplyCount;
int i= E_REPLY_USER_ID; int i= E_REPLY_USER_ID;
while (i < E_REPLY_MAX) while (i < E_REPLY_MAX)
{ {
@@ -140,6 +162,8 @@ void SReplyGetManage::NaverNewsRun()
nCount++; nCount++;
} }
m_pool->waitForDone(); m_pool->waitForDone();
// qDebug() << "m_nTotal = " << m_nTotal;
for (int i = 0; i < m_nTotal ; i++) for (int i = 0; i < m_nTotal ; i++)
{ {
m_pData->setData(m_pData->GetDate(pReply[i].m_strReplyData[E_REPLY_DATE]), SCrawlerData::ARTICLE_DATE); m_pData->setData(m_pData->GetDate(pReply[i].m_strReplyData[E_REPLY_DATE]), SCrawlerData::ARTICLE_DATE);
@@ -147,6 +171,7 @@ void SReplyGetManage::NaverNewsRun()
m_pData->setData(m_pData->SqlString(m_pData->GetSafeUtf(pReply[i].m_strReplyData[E_REPLY_USER_NICKNAME])), SCrawlerData::ARTICLE_NICKNAME); m_pData->setData(m_pData->SqlString(m_pData->GetSafeUtf(pReply[i].m_strReplyData[E_REPLY_USER_NICKNAME])), SCrawlerData::ARTICLE_NICKNAME);
m_pData->setData(m_pData->SqlString(m_pData->GetSafeUtf(pReply[i].m_strReplyData[E_REPLY_USER_ID])), SCrawlerData::ARTICLE_ID); m_pData->setData(m_pData->SqlString(m_pData->GetSafeUtf(pReply[i].m_strReplyData[E_REPLY_USER_ID])), SCrawlerData::ARTICLE_ID);
m_pData->setData(m_pData->SqlString(m_pData->GetSafeUtf(pReply[i].m_strReplyReply.join("\r\n"))), SCrawlerData::ETC); m_pData->setData(m_pData->SqlString(m_pData->GetSafeUtf(pReply[i].m_strReplyReply.join("\r\n"))), SCrawlerData::ETC);
m_pData->setData(QString::number(i), SCrawlerData::ARTICLE_ORDER);
m_pData->sendDB(); m_pData->sendDB();
} }
delete [] pReply; delete [] pReply;

View File

@@ -53,7 +53,6 @@ void SRunnable::RunNaverNews()
{ {
byArray += socket.readAll(); byArray += socket.readAll();
} }
QJsonDocument d; QJsonDocument d;
{ {
QJsonParseError error; QJsonParseError error;
@@ -71,13 +70,22 @@ void SRunnable::RunNaverNews()
strOut += byArray; strOut += byArray;
} }
} }
strOut = strOut.replace("\r\n","").replace("\n",""); strOut = strOut.replace("\r\n","").replace("\n","");
{
QRegExp re("\\}\\}[\\w\\s]*$");
strOut = strOut.replace(re,"}}");
}
if (strOut.length() <= 0 ) return; if (strOut.length() <= 0 ) return;
d = QJsonDocument::fromJson(strOut.trimmed().toUtf8(),&error); d = QJsonDocument::fromJson(strOut.trimmed().toUtf8(),&error);
if (error.error != 0) if (error.error != 0)
{ {
qDebug() << error.errorString(); qDebug() << error.errorString();
Debug("reply.json",strOut); Debug("reply.json",strOut);
socket.close();
exit(0); exit(0);
} }
} }