微信公众平台的信息爬取剖析.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微信公众号的信息获取分析 目录 1微信公众平台背景 1 2采集的方案及难点 1 2.1微信没有公开的搜索接口 1 2.2常规思路及问题 1 3国内研究现状 2 3.1提出的方案 2 3.1.1旧方案 2 3.1.2新方案 3 3.2成熟的分布式微信公众平台信息爬取 4 3.3公众号信息存储 9 3.4文章信息存储 9 4个人设想 10 5总结与展望 12 1微信公众平台背景 微信是腾讯公司于 2011 年推出的移动社交平台,目前已累计超过 6亿的注册用户。而 2012 年推出的微信公众平台依托于微信的海量用户也迅速流行起来,目前该平台的注册公众号账号早已超过 800 万,累计发布了超过 2亿的文章。依托大量的移动端用户,微信公众平台推出服务号,订阅号和企业号,通过这三种账号达到消息推送,信息交流,信息互动的目的,且越来越多的企业和用户通过微信公众平台进行网络营销,网络信息化服务,网络宣传等, 微信公众平台已经成为了继微博和QQ之后新型网络平台,平台通过提供私密接口的方式让微信用户与服务端进行信息交流与互动,这大大节省了服务端企业对其服务产品的再包装和再推广的费用,再加上公众号内简单易操作的界面使大量的用户对其青睐有加。所以对微信公众平台的关键信息爬取,能够及时获取有价值的信息,为企业和个人提供信息指导,对企业和个人的决策做到参考作用。因此对微信公众平台的信息爬取的研究有重要意义。 2采集的方案及难点 2.1微信没有公开的搜索接口 由于微信尚未有公开的搜索接口供第三方的搜索引擎爬取,而且微信也未提供官方权威的微信公众号的导航网站或推荐服务,因此指望完成对所有微信公众号的爬取并不现实,只能对指定微信公众号的内容进行爬取。 2.2常规思路及问题 已知对所有公众号直接爬取占时不现实,那么对微信公众号的指定内容爬取主要分为如下一些步骤: 第一步就是获得需要爬取的微信公众号列表 微信公众号列表可以参考那些微信导航站的做法,人工维护维护行业精品微信号列表。当然也可以直接爬取那些微信导航站,但质量很差。好在真正高质量值得爬取微信公众号也就至多上万个。 第二部就是要获取每一个微信公众号的内容入口页面。 随便留意一下某个微信公众号,会发现每个微信公众号的“查看历史消息”中有此公众号已发布的所有微信内容,剩下的问题是怎样获取这个地址。 一般程序员的思路是通过抓包、反编译等手段来获取此入口地址。好消息是要获取此微信公众号的入口地址并不复杂,你会欣喜发现此入口地址是一个普通的网页。 坏消息是:当你多测试一下,你会发现如下问题: 1)、此入口地址并不是固定不变的,一天左右就会变化的,主要是里面的key值。因此指望通过人工手工抓包一劳永逸地获取的地址并无太多实用价值 2)、此入口页面对未关注的用户只能看第一页,需要关注后才能看后续页面,要获取后续页面,只能关注此账号,但要人工关注上万个来自更多账号的关注并不现实 3)、微信对一个账号关注的公众号数是有上限限制的 应对此难题最一劳永逸的方案当然是反编译代码,获取微信的通信协议,但就研究结果来看,成本过高,破解的可能性也不大。 3国内研究现状 3.1提出的方案 3.1.1旧方案 在2015年的时候微信网页版限制还是没那么严格的, 当时采用的主要思路是使用微信网页版, 然后用requests去模拟登陆一下, 然后不停的去访问类似下面的接口爬取信息: 当时为了能让爬虫多个实例跑, 用了一下 Celery 框架(现在想简直智障, 多个实例跑直接把程序启动N次就行了啊。。摔), 由于是模拟登陆, 所以又写了一套复杂的东西去生成二维码, 然后获取登陆URL, 具体的模拟登陆原理参考这个 wechat-deleted-friends, 另外相关的Celery Task里写的逻辑太复杂了, 一个Task里就带上了 requests断线重连机制, 模拟登陆机制, 解析列表, 解析文章等, 另外由于是web版微信有一套蛮复杂的sync机制, 有时候直接掉线需要再次的去手动登陆, 很是麻烦。 之后web版微信已经无法的获取Key了(2016年开始), 此方案就废弃了。。 3.1.2新方案 经leader提醒, 改了一下架构, 其中项目的整体结构如下: 微信爬虫架构图 Seeds 是一个producer, 在此处指通过某种方式获取 uin, key, pass_ticket 信息, 思路类似中间人攻击+解析squid日志 Consumer C1从Q1队列中取出seeds后爬取某个公众号的文章列表, 解析后将文章Meta信息放入队列Q2 Consumer C2获取文章原信息后就可以直接做入库爬取操作了 之后可以继续加队列然后去实现爬取文章阅读点赞的相关数据了, 由于有频率限制。一个微信号一天只能最多获

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档