当前位置: 首页 > 专利查询>四川大学专利>正文

一种基于多策略融合的微博数据获取方法技术

技术编号:21454027 阅读:29 留言:0更新日期:2019-06-26 04:48
本发明专利技术公开了一种基于多策略融合的微博数据获取方法,首先模拟登录,获取登录成功的Cookie;将获取的Cookie保存到Cookie队列中,获取初始任务;然后使用多账号负载均衡策略爬取用户关注列表、用户资料;提取用户ID,生成关注关系和用户信息待爬取队列,再爬取用户关注列表、用户资料,同时生成用户微博待爬取队列;构造访客Cookie,使用IP代理池加速爬取微博内容,将信息存入数据库中;提取微博ID,生成评论信息待爬取队列;爬取微博评论信息,将信息存入数据库中。本发明专利技术通过自适应算法找到适合当前网络环境和Cookie队列长度的并发请求数,在采集速度和账号安全之间取得平衡;同时实现了高可用代理IP模块以加速数据采集,为网络舆情分析提供基础数据支持。

【技术实现步骤摘要】
一种基于多策略融合的微博数据获取方法
本专利技术涉及网络数据采集
,具体为一种基于多策略融合的微博数据获取方法。
技术介绍
互联网的普及和发展促进了社交网络的蓬勃发展。微博作为当前最为流行的社交网络应用之一,以其用户数量基数大、状态信息更新频繁、信息传播迅速等特点,在近几年中得到迅猛的发展,已成为中国主要的传播媒介之一。根据《第42次中国互联网络发展状况统计报告》显示,截至2018年6月,微博以42.1%的用户使用率排在社交应用第三位,较2017年12月增长1.2%,其在粉丝互动和内容分发等方面进一步强化。社交网络用户规模巨大,信息传播速度快,内容丰富,影响范围广,对于网络舆情分析具有十分重要的意义。当前微博数据采集方法一般通过微博应用程序编程接口(ApplicationProgrammingInterface,API)或基于模拟登录的方式进行数据采集。使用微博API进行采集会受到微博系统API授权及每天调用次数的限制,采集的数据量少;通过模拟登录进行数据采集虽然突破了微博API的限制,但是需要多个账号配合一定的负载均衡策略才能做到较为快速的采集,并且在大规模数据采集中会有封号的风险,账号保活的难度较大。现有的微博数据采集方法常使用单一的采集策略,导致采集的数据量不稳定,效率低较低。
技术实现思路
针对上述问题,本专利技术的目的在于提供一种可以稳定、高效地采集微博数据,为网络舆情分析提供基础数据支持的基于多策略融合的微博数据获取方法。技术方案如下:一种基于多策略融合的微博数据获取方法,包括以下步骤:步骤1:模拟登录,获取登录成功的Cookie;步骤2:将步骤1获取的Cookie保存到Cookie队列中;步骤3:获取初始任务:选取多个粉丝数较多的微博用户作为初始爬取的节点;步骤4:使用多账号负载均衡策略爬取用户关注列表、用户资料:访问初始的微博用户集合,根据用户ID构造用户资料URL,进行用户资料、用户关系的采集;步骤5:提取用户ID,生成关注关系和用户信息待爬取队列,跳转至步骤4;同时,生成用户微博待爬取队列;步骤6:构造访客Cookie:以未登录状态访问微博首页,爬虫利用微博系统生成的标明游客身份的Cookie采集微博平台的相关内容;步骤7:采集程序访问用户微博待爬取队列集合,根据微博ID构造微博URL,基于访客Cookie和代理IP池访问构造的微博URL,进行微博内容的采集;步骤8:采集程序下载微博URL页面后,对页面进行解释,提取微博ID,生成评论信息待爬取队列;步骤9:采集程序访问评论信息待爬取队列集合,基于访客Cookie和代理IP池下载微博评论页面,对页面进行解释,微博评论信息,将信息存入数据库中。进一步的,所述模拟登陆为:利用程序模拟用户登录服务器,从而获取登录账号Cookie,其步骤如下:步骤1)预登录请求:程序对用户名进行base64编码,并构造预登录请求地址;步骤2)获取加密的nonce和servertime:发送GET请求得到nonce、servertime、pubkey和rsakv变量,nonce和servertime用于对登录密码进行加密,pubkey和rsakv是固定值,直接写入程序中;步骤3)使用RSA2加密登录密码:利用步骤2)获取的nonce以及rsakv,结合微博的公钥rsakt,使用RSA2算法对用户密码进行加密,获得加密后的密码;步骤4)获取服务器凭证:发送关键参数,通过POST方法完成请求后,服务器将传回的响应信息,包括retcode和arrURL两部分内容;步骤5)获取登录成功的Cookie:通过GET方法访问arrURL,服务器将返回当前用户的个人信息,请求返回的Cookie即为有效Cookie,用它进行数据采集。更进一步的,以小于24小时的间隔定时进行模拟登录,以最新的Cookie代替即将失效的Cookie。更进一步的,所述多账号负载均衡策略中,通过模拟登录获取多个账号的Cookie,并将这些Cookie保存到一个队列中;爬虫在请求的时候,从队头获取一个Cookie,并且给定初始的TTL值,每次爬虫携带该Cookie进行请求之后,就将对应Cookie的TTL值减1,当TTL值减为0时便将该Cookie放至队尾,再从Cookie队列中取队首Cookie进行页面请求。更进一步的,所述在请求完一个页面之后,爬虫将随机休眠一定时间,以保证账号的安全性。更进一步的,所述步骤4中采用自适应并发采集策略,结合当前网络环境和Cookie队列长度为基于模拟登录的网络爬虫寻找能稳定快速进行数据抓取的并发线程数阈值;所述策略包括快增加和慢调整两个阶段:在快增加阶段按照指数规律增加请求线程数,每当线程增加后,程序在一个时间窗口内判断所使用的账号状态是否正常;正常则继续成倍增加线程数,并按照所述负载均衡策略轮换Cookie;异常则剔除异常Cookie,并在队尾添加一个新的账号Cookie,使Cookie队列长度与初始值保持一致,并且将下一个时间窗口的线程数设置为当前线程数的一半,并进入慢调整阶段;其中,Nt+1表示下一个时间窗口的采集线程数,Nt表示当前时间窗口的采集线程数;state表示在当前时间窗口内数据采集,Cookie状态是否正常,1为正常,0为异常;在慢调整阶段按照线性规律增加请求线程数,每当线程增加后,程序在一个时间窗口内判断所使用的账号状态是否正常;正常则继续按线性方式增加线程数,并按照所述负载均衡策略轮换Cookie;异常则剔除异常Cookie,并在队尾添加一个新的Cookie,使Cookie队列长度与初始值保持一致,并且按线性方式减少当前线程数;直到慢调整阶段结束,则当前线程数便是当前网络环境和并发线程Cookie队列长度条件下能够进行持续稳定采集微博数据的最佳线程数;其中,Nt+1表示下一个时间窗口的采集线程数,Nt表示当前时间窗口的采集线程数;state表示在当前时间窗口内数据采集,Cookie状态是否正常,1为正常,0为异常。更进一步的,所述访客Cookie构造方式如下:步骤a)获取tid、c和w三个参数分析浏览器报头得到tid的获取方式:首先需要构造参数fp和cb,fp参数由浏览器相关信息构成,包括参数os、brower、fonts、plugins和screenInfo;cb参数为固定的值,值为“gen_callback”;在fp和cb参数构造完成之后,获取参数tid;同时,服务端将返回new_tid和confidence两个参数,new_tid的值为true或者false;当new_tid为true时,w为3;当new_tid为false时,w为2;参数c的值和confidence的值相同;步骤b)获取未登录状态下的Cookie首先通过步骤a)得到的tid构造一个新的Cookie,该Cookie的内容包括一个键值对,内容为{“tid”:tid+“__”+c};然后通过GET方法完成请求,再通过检查返回的内容中的msg字段的值是否为succ,以判断获取未登录Cookie是否成功;如果msg值为succ,则表示获取Cookie成功,访客Cookie可从响应的报头中获取。更进一步的,所述IP代理池包括:代理IP采集器、代理IP校验器和代理IP调度器;本文档来自技高网...

【技术保护点】
1.一种基于多策略融合的微博数据获取方法,其特征在于,包括以下步骤:步骤1:模拟登录,获取登录成功的Cookie;步骤2:将步骤1获取的Cookie保存到Cookie队列中;步骤3:获取初始任务:选取多个粉丝数较多的微博用户作为初始爬取的节点;步骤4:使用多账号负载均衡策略爬取用户关注列表、用户资料:访问初始的微博用户集合,根据用户ID构造用户资料URL,进行用户资料、用户关系的采集;步骤5:提取用户ID,生成关注关系和用户信息待爬取队列,跳转至步骤4;同时,生成用户微博待爬取队列;步骤6:构造访客Cookie:以未登录状态访问微博首页,爬虫利用微博系统生成的标明游客身份的Cookie采集微博平台的相关内容;步骤7:采集程序访问用户微博待爬取队列集合,根据微博ID构造微博URL,基于访客Cookie和代理IP池访问构造的微博URL,进行微博内容的采集;步骤8:采集程序下载微博URL页面后,对页面进行解释,提取微博ID,生成评论信息待爬取队列;步骤9:采集程序访问评论信息待爬取队列集合,基于访客Cookie和代理IP池下载微博评论页面,对页面进行解释,微博评论信息,将信息存入数据库中。

【技术特征摘要】
1.一种基于多策略融合的微博数据获取方法,其特征在于,包括以下步骤:步骤1:模拟登录,获取登录成功的Cookie;步骤2:将步骤1获取的Cookie保存到Cookie队列中;步骤3:获取初始任务:选取多个粉丝数较多的微博用户作为初始爬取的节点;步骤4:使用多账号负载均衡策略爬取用户关注列表、用户资料:访问初始的微博用户集合,根据用户ID构造用户资料URL,进行用户资料、用户关系的采集;步骤5:提取用户ID,生成关注关系和用户信息待爬取队列,跳转至步骤4;同时,生成用户微博待爬取队列;步骤6:构造访客Cookie:以未登录状态访问微博首页,爬虫利用微博系统生成的标明游客身份的Cookie采集微博平台的相关内容;步骤7:采集程序访问用户微博待爬取队列集合,根据微博ID构造微博URL,基于访客Cookie和代理IP池访问构造的微博URL,进行微博内容的采集;步骤8:采集程序下载微博URL页面后,对页面进行解释,提取微博ID,生成评论信息待爬取队列;步骤9:采集程序访问评论信息待爬取队列集合,基于访客Cookie和代理IP池下载微博评论页面,对页面进行解释,微博评论信息,将信息存入数据库中。2.根据权利要求1所述的基于多策略融合的微博数据获取方法,其特征在于,所述模拟登陆为:利用程序模拟用户登录服务器,从而获取登录账号Cookie,其步骤如下:步骤1)预登录请求:程序对用户名进行base64编码,并构造预登录请求地址;步骤2)获取加密的nonce和servertime:发送GET请求得到nonce、servertime、pubkey和rsakv变量,nonce和servertime用于对登录密码进行加密,pubkey和rsakv是固定值,直接写入程序中;步骤3)使用RSA2加密登录密码:利用步骤2)获取的nonce以及rsakv,结合微博的公钥rsakt,使用RSA2算法对用户密码进行加密,获得加密后的密码;步骤4)获取服务器凭证:发送关键参数,通过POST方法完成请求后,服务器将传回的响应信息,包括retcode和arrURL两部分内容;步骤5)获取登录成功的Cookie:通过GET方法访问arrURL,服务器将返回当前用户的个人信息,请求返回的Cookie即为有效Cookie,用它进行数据采集。3.根据权利要求2所述的基于多策略融合的微博数据获取方法,其特征在于,以小于24小时的间隔定时进行模拟登录,以最新的Cookie代替即将失效的Cookie。4.根据权利要求1所述的基于多策略融合的微博数据获取方法,其特征在于,所述多账号负载均衡策略中,通过模拟登录获取多个账号的Cookie,并将这些Cookie保存到一个队列中;爬虫在请求的时候,从队头获取一个Cookie,并且给定初始的TTL值,每次爬虫携带该Cookie进行请求之后,就将对应Cookie的TTL值减1,当TTL值减为0时便将该Cookie放至队尾,再从Cookie队列中取队首Cookie进行页面请求。5.根据权利要求4所述的基于多策略融合的微博数据获取方法,其特征在于,所述在请求完一个页面之后,爬虫将随机休眠一定时间,以保证账号的安全性。6.根据权利要求4所述的基于多策略融合的微博数据获取方法,其特征在于,所述步骤4中采用自适应并发采集策略,结合当前网络环境和Cookie队列长度为基于模拟登录的网络爬虫寻找能稳定快速进行数据抓取的并发线程数阈值;所述策略包括快增加和慢调整两个阶段:在快增加阶段按照指数规律增加请求线程数,每当线程增加后,程序在一个时间窗口内判断所使用的账号状态是否正常;正常则继续成倍增加线程数,并按照所述负载均衡策略轮换Cookie;异常则剔除异常Cookie,并在队尾添加一个新的账号Cookie,使Cookie队列长度与初始值保持一致,并且将下一个时间窗口的线程数设置为当前线程数的一半,并进入慢调整阶段;其中,Nt+1表示下一个时间窗口的采集线程数,Nt表示当前时间窗口的采集线程数;state表示在当前时间窗口内数据采集,Cookie状态是否正常,1为正常,0为异常;在慢调整阶段按照线性规律增加请求线...

【专利技术属性】
技术研发人员:王文贤陈兴蜀王海舟严丹王培名唐瑞
申请(专利权)人:四川大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1