网站信息的采集系列(一)--基本流程
发布日期:2022-02-24 11:35:56 浏览次数:8 分类:技术文章

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

        互联网上存在海量的数据,各式各样的数据每天展现在我们面前,同时众多的金融、医学和计算机等学科的研究课题,都需要获取众多的数据作为样本进行科学分析,传统的人工采集操作根本上很难胜任数据采集,即便是能够收集也需要耗费众多的时间成本,自动化网站采集应用而生。一般采集数据是各种客户端所呈现的结构化数据,例如浏览器,APP等。数据存储在客户端。采集数据不会在服务器端采集,一方面比较困难,另外这也是一种违法行为。很多客户端也要求提供验证,如用户名密码等。

        网站采集的原理基本一致,例如国内用的比较多的采集器某头、某鱼等,首先由客户端发出请求,服务器接受请求后再返回相应的数据,而采集器就从返回的数据中找到对应的数据。采集器根据采集要求自动发出不同的请求,例如模拟人的点击过程或者自定规则。网站的数据获取非常依赖数据的结构,必须根据不同的数据结构制定不同的采集规则。基本上每个网页的数据结构都不同,因此必须根据具体的网页来制定规则。

        下面以某网站的一个页面为例,说明下网站数据采集的过程。

  1. 确定需要获取数据的网页

网页的结构如下图所示,这是个微信小程序源码的下载页面,需要获取如下内容:1 源码名称(仿天猫首页);2 获取模板截图的地址

 

2.获取相应的元素信息

这个比较简单,在浏览器中按F12就可以查找到相应的元素。本页面的元素信息如下:

源码名称:

元素的类名pins-title在本页是唯一的;

模板截图:

元素的类名pins-info在本页是唯一的;

 

(三)在程序中实现内容的获取

使用QWebEngine实现对网页的操作。

第一,为QWebEngineView设置网页的地址,并登录网站,具体实现可自行搜索下,网上很多;

第二,书写javascript代码,从而能获取指定元素的内容,代码如下,后面的ret是为了方便输出的参数:

QString jscode = "var i,title,elements,imgs='',ret='';"

        "elements = document.querySelectorAll('.pins-title strong');"

        "title = elements[0].innerText;"

      "elements = document.querySelectorAll('.pins-info .text img');"

       "for(i=0;i<elements.length;i++){imgs += elements[i].getAttribute('src');imgs+=',';};"

                         "ret = 'title=';"

                         "ret += title;"

                         "ret += '&';"

                         "ret += imgs;"

                         "ret;";

      运行javascript代码:

web_view->page()->runJavaScript(jscode,[this](const QVariant& v){qDebug()<<v.toString();});

运行结果如下:

 

 

结果可交由主程序处理,例如存入excel表、数据库等。

 

 

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

上一篇:Qt之操作Excel
下一篇:网站信息的采集系列(二)--百度搜索内容的采集

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月25日 23时12分35秒