www.t35.ccwww.cf000111.com ∠  您当前所在位置:主页 > www.t35.ccwww.cf000111.com >
微博抓取策略及实现
发布日期:2019-07-22 23:27   来源:未知   阅读:

  ,按照一定的规则例如深度优先、广度优先、大站优先、小站优先等方法进行扩展其之中,直接抓取页面,并对页面进行解析,例如获取粉丝数、微博数、关注数、发表的帖子等等数据。其抓取的方法本质上可以归结为两种:直接调用官方给定的开放

  使用新浪API首先要解决的是用户认证问题。所谓认证是指用户在不向第三方透露自己的用户名密码的同时,使第三方软件提供方申请获得该用户资源的授权。OAUTH认证为用户资源的授权提供了一个安全的、开放而又简易的标准,被用于新浪微博API的用户验证协议,过程如下:

  1)用户向新浪微博OAUTH服务提供商申请应用,获得应用专属App Key和App Secret,分别以HMAC-SHA1算法对用户发出的请求进行数字签名。

  2)通过新浪微博开放平台获取RequestToken。未经服务器授权的Request Token中包含了对应密钥、加密算法、发起请求的时间戳、随机字符串与版本号信息。

  3)向新浪微博服务器Request Token授权地址发送请求,服务器同意用户的请求,并向其颁发未经用户授权的Oauth Token与对应的Oauth Secret。

  6)服务器同意用户请求,并向其颁发通过新浪微博授权的Access Token与对应的密钥。

  OAUTH授权解决了程序访问API的用户身份认证问题。新浪API可根据请求内容的不同,返回特定的XML或JSON文件。XML作为一种跨平台的强结构性扩展标记语言,因为所有的用信息都被对应的标签所标记,例如:〈id〉1861021910〈/id〉〈name〉Hugo〈/name〉,所以用户可以便捷地找出相应信息并理解其中内容。

  JSON是一种轻量级的数据交换格式,文件不具有明显的强结构特征,如: {“id”:””,”name”:”Hugo”}。在复杂的JSON对象中,因为它不像XML文件用规范的标签形式标记有效的内容,虽然对于人来说较难整理,但因为JSON文件结构简单,因此通过电脑分析JSON文件具有强大的处理能力。另外JSON文件中因为不再具有用于标记内容属性的说明性标签,所以JSON文件相比XML文件,查询相同内容的返回文件更小,因此更适合作为微博海量数据获取中的文件传输形式。

  可以自由选择使用相关接口,例如statuses/home_timeline接口获取当前登录用户及其所关注用户的最新微博。.json?source=appkey&user_id=11051&count=100&cursor=1600。这个地址中为新浪API存放服务器地址, statuses/followers为调用请求的具体方法, json?表示返回的是JSON文件形式,问号之后为传递参数。appkey是上述OAUTH认证中用户第一步申请的专属App Key字符串; user_id是所查询用户的数字ID; count=100表示每一次查询最多返回100条记录,在新浪API中这个数值最大为200,缺省值为20; cursor=1600表示这一次查询从第1600条记录开始返回之后的100条数据,根据新浪微博API调用限制,每次查询最大只能返回5 000条数据。为了均衡服务器的负载,通常API服务商对用户的API接口调用频率与查询范围也会根据用户权限的不同有所限制。除了上述一次请求最多只能返回5 000个结果之外,新浪微博API对用户调用接口的查询次数也有限制。普通授权用户每小时接口使用上限1 000次,并且在程序运行中如果短时间内较多地调用API接口,虽然总次数并没有达到每小时的1 000次,但因为在这段时间内调用高度频繁,程序调用结果依然会返回403错误,即用户已达到API使用上限。为了避免用户过高访问新浪API接口,程序必须通过线程控制API访问频率。

  新浪SDK是为方便微博API调用而开发的一套软件开发包,其中封装了从授权认证到数据获取与解析的各项功能。SDK是建立在API基础上的集成与开发,基于SDK的工程可以大大降低程序开发的工作量。目前已开发并发布的SDK包括支持JAVA、C++、PHP、PYTHON等12种不同计算机语言的版本。但新浪微博作为一种新生网络应用, SDK开发并不完善,功能性与稳定性均不如API表现出色。另外,因为主要微博服务提供商,如美国的Twitter、中国的新浪等,授权验证与API调用形式是相同的,唯一不同的只是API请求发送地址的区别,因此通过API自行编写的程序,不但可以灵活实现新浪微博开放API接口的所有功能,同时只需要修改API调用地址与参数,就可以实现其他微博平台数据的抓取与处理。

  3.运行后会弹出浏览器地址跳转到授权认证页面,然后输入你的微博帐号和密码,会调转到你的回调地址页面,url后面会传递code参数 ,然后在console输入code就能获取到oauth2的accesstoken

  4.接下来即可调用example中的相关接口例如user/show接口等

  间接进行硬爬主要是指不调用官方给定的api,绕过权限认证进行解析页面直接获取数据。通过调用API接口可以实现新浪微博数据的便捷抓取与解析,但所有微博服务商都不会无条件将完整API开放给普通用户,因此使用API的方式永远只可以解决微博数据获取中的一部分问题。如在新浪微博中,很多重要查询功能的API是不开放的,同时对于开放的API,一条查询的返回结果数目上限为5000,而往往那些拥有较大信息量的节点才是微博研究最关心的问题。于是在API之外,进行直接爬取需要绕过权限认证进行页面间隙的方式进行获取更多的信息。获取数据要解决以下几个问题:1.模拟登陆问题2.解析页面问题。

  只有通过账号用户才能有权限进行访问用户页面,所以首要的问题是解决怎样登陆的问题。新浪微博的模拟登录过程,是向服务器端以一定的格式发送经过Base64编码加密的原始用户名与密码信息,服务器从http-header里包含的授权信息Authorization中提取字符串并解密后得到原有用户名与密码,实现程序对网页的模拟登录过程。

  登陆,这一步的主要目的是获取新浪微博的一个名字为ssologin.js的js脚本文件,在的页面中连接为

  该脚本文件中包含了整个登陆过程,同时包含了RSA加密算法,WSSE加密算法和BASE64加密算法。目前该脚本文件的版本为1.4.11,版本一直在升级,升级过程加密算法可能会做更改。

  Servertime和nonce很重要,这两个数据很重要,是配合对账户密码进行加密的值Pubkey是加密算法的公钥Rsakv代表rsa加密算法上述数据中,servertime,nonce,rsakv是需要传回服务器的数据3.提交的表单格式如下:

  该表单提交到URL:此处显示了ssologin.js的版本,该版本一直在变化

  我对于sp的处理是直接将ssologin.js脚本中的RSA加密算法部分抽取到一个新建的js脚本中,然后通过java进行调用,不过抽取的js代码需要做一些变化。

  这个地方获得的cookie比较多,有什么UOV,SUP等等很多。我们需要将这些cookies都保存好。

  因为网页HTML文件是一种不严谨的网页标记语言,这会对网页信息的提取造成一定困难,因此首先需要将标准的HTML语言转化为标准的DOM树结构,然后利用XPath可以定位存放关键信息的DOM节点位置,最后抽取XPath特征节点中的内容。可以使用jdom,dom4j进行解析。但是,微博页面就是微博页面,不同于一般的网页页面,其元素及内容组织在script中,如:

  从上图的下面的滚动条可以看出,页面的数据还有很多没有显示。考虑到其格式类似于json格式,可以采用一些json包进行解析如jsoup、jackson、org.json、fast-json等方法进行解析。

  总体来说,两种方式获取的数据有所不同,下面将从速度、获取总量、获取内容项、次数限制等方面进行比较。

  说明:获取的微博数据主要有昵称,认证,发布日期,微博内容,来源,转发数,点赞数,评论数,用户id,用户关注数,用户粉丝数,用户性别等...

  本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Messag。同时欢迎加入社交媒体数据交流群:99918768利用新浪API...

  非wap版微博模拟登陆研究知乎上的各种答案:Python爬虫如何机器登录新浪微博并抓取内容?Python模拟登录新浪微博的两种方法github上的一个很吊项目:完成微博、知乎、微信上的各种登录:给出了...

  OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可...

  代码请移步GitHub:SinaSpider爬虫功能:此项目和QQ空间爬虫类似,主要爬取新浪微博用户的个人信息、微博信息、粉丝和关注(详细见此)。代码获取新浪微博Cookie进行登录,可通过多账号登录...

  两个月前学习phpcurl时做的练习,今天周末整理了一下。程序封装了四个类,主要使用了curl来抓取微博用户的个人信息页面以及关注的用户页面,然后通过分析页面结构使用正则表达式以及php的字符串函数截...

  在进行自然语言处理、文本分类聚类、推荐系统、舆情分析等研究中,通常需要使用新浪微博的数据作为语料,这篇文章主要介绍如果使用Python和Selenium爬取自定义新浪微博语料。因为网上完整的语料比较少...

  这里提供一种获得新浪微博Session的方法。转载别人的方法,亲测有效,这里贴出原作者的博客:岁月如歌返回的session保存了登录状态,尽情做你做想做的事吧。当然,这里建议用上面方法获得的Sessi...

  在正题之前,先了解一下java下抓取网页上特定内容的方法,结杲查询本港台开奖现场直播,也就是所谓的网络爬虫,在本文中只会涉及简单的文字信息与链接爬取。java中访问http的方式不外乎两种,一种是使用原生态的httpconnec...

  最近打算做一些东西,数据积累是储备的第一步,因此就不可避免地要写爬虫,抓取网页上的有效信息。因为期待数据有一些话题,量又比较大,考虑到经常逛微博,而且微博的话题又恰好可能满足后续的需求,因此就决定抓取...

  最近突然想做一个网络爬虫,爬取微博上的用户信息。这里说一下第一步登录的思路和奉上部分代码。1.获得登录的参数信息/***初始登录信息*返回false说明初始失败*/publicbooleanpreLo...

  无论是做与微博相关研究还是开发相关应用,可能需要获取历史的或者实时的数据。如何获取呢?除了新浪微博为开发者提供了API,还可以利用搜索功能(详见)来收集数据。在历史数据获取方面,与twitter相比,...

  微信是比较封闭的,微博的好友信息比较开放,都可以抓到;1)找人,通过关注列表;2)提取出微博的数据,放到数据库;微博昵称,头像;关注,粉丝及微博数量;根据一些基本的原则来决定是否将该用户的微博入待爬的...

  看着女神微博,总觉得女神微博的哪一张照片都好看,于是想用脚本把她微博相册中的微博配图全部抓下来。一开始打开微博配图网页,打开开发者工具,查看网页源代码。其后,我直接右键查看网页源代码,发现网页源代...

  需求有4万条已知的网页微博地址,想要抓取每一条网页上的评论数,点赞数和转发数目。问题怎么登录?目前可以抓取cookie的方法有很多博客写过了,微博只支持移动版的cookie获取。怎么抓取?有很多框架,...

  这里没用用新浪微博给的官方api,直接使用webmagic爬取,网页版的有反爬虫策略,爬起来困难,这里爬取的是移动版本。经过分析微博的请求找到请求进行爬取。这里写的爬取热榜前30页的数据。packag...

  该爬虫属于本人2015新作,虽然尚有不足,却具有爬虫的基本雏形,望借鉴

  本文主要介绍“新浪微博爬虫”(以下简称“微博爬虫”)的使用教程及注意事项。新浪微博作为时下最热门的社交软件之一,拥有海量活跃用户,同时也聚集了大批名家、名人及公众人物,其平台上每日交流、推广的即时信息...

  python作为人工智能或者大数据的宠儿,我自然要学习,作为一个小白,第一个实现的工能就是爬虫,爬数据,收集数据,我以我爬微博的事情为例子,附上代码,大家一起学习

  老师给的任务,要对批量的微博文本进行舆情分析。第一步就是数据的抓取。在网上搜了一下大多是基于手机版网页(wap/cn)的爬虫,但是我在电脑上打不开这些网站。由于自己也是网页小白,所以就参考着别人的代码...

  用jquery实现的仿微博点击缩略图预览大图效果支持图片旋转,查看原图等功能,可以收起大图返回小图。

  #两部分需求,一是搜索词实时微博情况,二是相关话题实时的微博情况(通过移动端获取api接口分析得到)1.相关话题实时的微博情况规律:要先找到话题list然后再跳转到各话题的实时微博去遍历(注意的是话题...

  腾讯,新浪微博模拟登录爬取数据 程序 ,无偿奉献了(java版本)05-28

  R语言微博爬虫RWEIBOR语言微博爬虫RWEIBOR语言微博爬虫RWEIBO

  当前新闻工作主要围绕着热点话题进行信息传播,而在采集新闻信息过程中,新闻机构主要通过网上及记者四处走访获取信息。然后这种方式并不能第一时间有效获取当前热点内容

  使用java自动爬取新浪微博历史列表-免登录目录使用java自动爬取新浪微博历史列表-免登录目录准备工作原理工作流程1.找出微博内容页请求链接2.修改参数拼出请求链接3.解析网页数据4.存入数据库程序...

  xtdfsql:神箭手云爬虫上/这里有现成写好的优酷视频抓取爬虫,可以直接使用,

  xu:图片看不到~ 请问楼主提供的这套策略在现在是否还有效? 看到新浪开放平台的声名中: 微博开放平台一直非常重视用户数据的保护,因此一直在不断完善自身的安全机制。目前微博开放平台的安全机制,能非常准确的识接口访问是用户行为调用、还是机器人程序调用。 我们希望开发者都能遵循请求限制和微博开放平台的开发者协议,基于用户主动行为正常的访问接口,而不是通过机器人程序、或者非用户主动行为调用接口,甚至大量抓取微博的用户数据。 因此,超过频次限制的过度调用、或者是非用户主动行为频繁调用(即使未超过频次限制)微博开放接口,都会导致你的应用(appkey)、IP被微博开放平台的安全机制识别为机器人程序、或者恶意抓取用户数据等违反微博开发者协议的情况。从而造成该应用、IP的接口访问权限被封禁,造成所有开放接口的请求都会被限制。

  石粟、变叶木、细叶变叶木、蜂腰榕、石山巴豆、毛果巴豆、巴豆、麒麟冠、猫眼草、泽漆、甘遂、续随子、高山积雪、铁海棠、千根草、红背桂花、鸡尾木、多裂麻疯树、红雀珊瑚、山乌桕、乌桕、圆叶乌桕、油桐、木油桐、火殃勒、芫花、结香、狼毒、黄芫花、了哥王、土沈香、细轴芫花、苏木、广金钱草、红芽大戟、猪殃殃、黄毛豆付柴、假连翘、射干、鸢尾、银粉背蕨、黄花铁线莲、金果榄、曼陀罗、三梭、红凤仙花、剪刀股、坚荚树、阔叶猕猴桃、海南蒌、苦杏仁、怀牛膝等。

  新光集团持有百年人寿的股权也已经处于冻结状态。工商信息显示,百年人寿在司法协助一栏共披露了10项股权冻结信息,冻结的起始时间从2018年10月17日到11月12日不等,被执行人均为新光集团。

  老酒师听了,恍然大悟,把酒又复蒸了两遍。果然经过这样三蒸,那酒就又香又浓。老酒师端着一碗酒轻轻一摇,一连叠的酒花像珍珠般浮在酒面上,经久不散。于是,酒师傅从此也传下了以摇酒确定酒度的习惯。

  在亚马逊第三季度财报中,公司共完成营收566亿美元,净赢利为28.83亿美元,较上年同期增加逾越10倍,接连第四季度完成逾越10亿美元赢利。在全球科技股遭受隆冬的布景下,本年1月8日盘后,亚马逊以7968亿美元的市值逾越微软成功登顶。

  记者注意到,除了上市公司新光圆成的股权,现在新光集团旗下的部分金融类公司也处于股权冻住状况。在新光集团官网展现中,新光金融板块的公司包含新光金控投资有限公司、杭州新光金融效劳有限公司、义乌新光民间本钱办理有限公司、义乌新光小额贷款股份有限公司、南粤银行、百年人寿等。



Power by DedeCms