网站信息采集系列(五)--百度新闻
发布日期:2022-02-24 11:35:57 浏览次数:5 分类:技术文章

本文共 2003 字,大约阅读时间需要 6 分钟。

本文实现在百度新闻搜索栏中自动输入关键字搜索(以“军事”为例),并自动采集搜索的内容,采集内容包含新闻标题,链接,来源,时间,摘要,并显示在表中,并将效果如下图所示:

 

1.网页分析

关键字搜索框及点击按钮

直接使用ID来确定,比较方便。

搜索到的内容:

里面的内容比较多,需要找下,下面直接贴代码。

2.主要代码

输入关键字并点击搜索按钮

var input_element = document.getElementById('ww');

input_element.value = 'mykeyword';

input_element = document.getElementById('s_btn_wr');

input_element.click();

获取页面指定内容

var contentElement = document.getElementById('content_left');

if (contentElement){

    var newsElements = contentElement.getElementsByClassName('result-op');

    if (newsElements && newsElements.length > 0){

        for (var i = 0;i < newsElements.length;i ++){

            //标题和链接

            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 <=mypages){

                jscode = *获取网页的内容代码*l

                webView->page()->runJavaScript(jscode,[&](const QVariant&){});

                this->currentPage = _curPage + 1;

            }

        }

    }

转载地址:https://blog.csdn.net/hulinhulin/article/details/121916827 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:股票历史走势的比较及显示
下一篇:网页聊天窗口的自动输入内容及自动发送

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月17日 03时49分59秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示 2021-06-30
oracle 数据回滚,恢复误删的数据,闪回表功能的使用 2021-06-30
mac 系统新功能体验-根据时间变化的动态桌面背景,看壁纸演绎风景大片中的日出与日落 2021-06-30
ADB的安装和使用教程,小米手机连接adb实例演示 2021-06-30
windows 关闭粘滞键-解决Microsoft Remote Desktop输入自动变为快捷键问题 2021-06-30
测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程 2021-06-30
PyQt5 技术篇-调用字体对话框(QFontDialog)获取字体,控件设置字体。 2019-04-27
Python 技术篇-将python项目打包成exe独立运行程序,pyinstaller库打包python代码实例演示 2019-04-27
Geany 权限问题:"Error opening file ... : permission denied.",原因及解决办法。 2019-04-27
CSDN博客主页增加赞赏码收钱模块,高端大气上档次! 2019-04-27
PyQt5 技术篇-调用文件对话框获取文件、文件夹路径。文件对话框返回选中的多个文件路径 2019-04-27
SSM 整合实现 增删改查、PageHelper 实现分页 2019-04-27
[增删改查] Lucene 5 索引 CRUD 2019-04-27
使用 SpringBoot 写增删改查接口 2019-04-27
初步使用 JFreeChart 生成报表与感受 2019-04-27
前端使用 BootStrap 写一些后台常用的界面 2019-04-27
使用 SpringBoot + Ckeditor 富文本编辑器、图片上传 2019-04-27
全栈式使用 SpringBoot + SpringSecurity 做登录认证 2019-04-27
[Java爬虫] 使用 Jsoup + HttpClient 爬取网页图片 2019-04-27
使用 Git 并借助 Eclipse + Coding 合作开发项目 2019-04-27