//标题和链接
var title = '',link = '';
var titleElements = newsElements[i].querySelectorAll('h3 a');
if (titleElements && titleElements.length > 0){
link = titleElements[0].getAttribute('href');
title = titleElements[0].innerText;
}
//来源,时间
var time = '',source = '';
var tsElements = newsElements[i].querySelectorAll('.c-row .c-span-last .news-source_Xj4Dv span');
if (tsElements && tsElements.length > 1){
source = tsElements[0].innerText;
time = tsElements[1].innerText;
}
//摘要
var abstract = '';
var absElements = newsElements[i].querySelectorAll('.c-row .c-span-last > span');
if (absElements && absElements.length > 0)
abstract = absElements[0].innerText;
}
/*点击下一页*/
var nextAElements = document.querySelectorAll('#page .page-inner a');
if (nextAElements){
nextAElements[nextAElements.length - 1].click();
}
}
}
3 翻页控制
点击下一页时,网页会释放窗口,然后再创建新窗口,因此翻页控制不能在当前窗口中进行,必须由主程序控制(我这里是QT),具体是在网页导入完成后再确定是否翻页,代码如下:
if (_urlStr.contains("baidu.com/s") && _urlStr.contains("tn=news")){
int _curPage = 0;
//如果没有key=pn的值,表示是第一页
if (_urlQuery.hasQueryItem("pn"))
_curPage = _urlQuery.queryItemValue("pn").toInt() / 10;
else
_curPage = this->currentPage = 0;
//只有当前翻页次数与this->currentPage相等时才能获取信息
//baidu_news-2.js里面会点击一次下一页
if (_curPage == this->currentPage){
//小于用户设置的翻页次数
if (this->currentPage <&#61;mypages){
jscode &#61; *获取网页的内容代码*l
webView->page()->runJavascript(jscode,[&](const QVariant&){});
this->currentPage &#61; _curPage &#43; 1;
}
}
}