ayanda83
19th November 2016, 21:38
I am trying to extract some data from an HTML document but for some reason my program crashes because of the code below. the program crashes when I capture the variable info_data in my lambda function. any help would be appreciated.
QString WebView::retData_Html()
{
QVariant info_data;
this->page()->runJavaScript("function retContactDetails(){"
"var x = document.getElementsByClassName(\"result\");"
"var detailsArray = [];"
"var companyName;"
"var contactNumer;"
"var address;"
"var i;"
"for(i = 0; i < x.length; i++){"
"var child_nodes = x[i].children;"
"var j;"
"for(j = 0; j < child_nodes.length; j++){"
"if(child_nodes[j].className == \"resultName\"){"
"companyName = child_nodes[j].firstElementChild.innerHTML;}"
"else if(child_nodes[j].className == \"resultAddress\"){"
"address = child_nodes[j].textContent;}"
"else if(child_nodes[j].className == \"resultContact\"){"
"contactNumer = child_nodes[j].firstElementChild.textContent;}"
"}"
"detailsArray.push(companyName);"
"detailsArray.push(address);"
"detailsArray.push(contactNumer);"
"}"
"return detailsArray.toString();"
"}"
"retContactDetails();",[&info_data](const QVariant &infoData){info_data = infoData/*qDebug() << infoData.toString() <<endl*/;});
return info_data.toString();
}
QString WebView::retData_Html()
{
QVariant info_data;
this->page()->runJavaScript("function retContactDetails(){"
"var x = document.getElementsByClassName(\"result\");"
"var detailsArray = [];"
"var companyName;"
"var contactNumer;"
"var address;"
"var i;"
"for(i = 0; i < x.length; i++){"
"var child_nodes = x[i].children;"
"var j;"
"for(j = 0; j < child_nodes.length; j++){"
"if(child_nodes[j].className == \"resultName\"){"
"companyName = child_nodes[j].firstElementChild.innerHTML;}"
"else if(child_nodes[j].className == \"resultAddress\"){"
"address = child_nodes[j].textContent;}"
"else if(child_nodes[j].className == \"resultContact\"){"
"contactNumer = child_nodes[j].firstElementChild.textContent;}"
"}"
"detailsArray.push(companyName);"
"detailsArray.push(address);"
"detailsArray.push(contactNumer);"
"}"
"return detailsArray.toString();"
"}"
"retContactDetails();",[&info_data](const QVariant &infoData){info_data = infoData/*qDebug() << infoData.toString() <<endl*/;});
return info_data.toString();
}