Python爬虫大数据采集与挖掘-微课视频版-课件 第二版-9 微博信息采集与Python实现_第1页
Python爬虫大数据采集与挖掘-微课视频版-课件 第二版-9 微博信息采集与Python实现_第2页
Python爬虫大数据采集与挖掘-微课视频版-课件 第二版-9 微博信息采集与Python实现_第3页
Python爬虫大数据采集与挖掘-微课视频版-课件 第二版-9 微博信息采集与Python实现_第4页
Python爬虫大数据采集与挖掘-微课视频版-课件 第二版-9 微博信息采集与Python实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python爬虫大数据采集与挖掘(9)

--微博信息采集与Python实现《Python爬虫大数据采集与挖掘》第二版.微课视频版(清华大学出版社,2025)教材《Python爬虫大数据采集与挖掘》及配套公众号

(当当、京东可购书)提纲微博信息采集方法概述微博开放平台授权与测试使用Python调用微博API采集数据通过爬虫采集微博常见的SNS平台的信息采集途径主要可以分为如下两种:通过平台提供的开放API获取数据和通过爬虫方式采集数据。微博API是微博官方开放的一组程序调用接口,通过这些API能够获得微博的博文、用户信息及用户关系信息等数据。但是在非商业授权下有较大的使用限制,能够获取的数据量有限。通过爬虫方式采集数据的方法,具体又可以分为两种,即,通过模拟用户行为进行页面分析与数据采集、通过模拟移动终端客户端进行数据采集。通过平台开放API获取数据的方式与爬虫方式的主要区别在于前者需要注册平台开发者身份。在获取数据前使用平台约定的方式进行身份认证。后者本质上是模拟终端或者用户的方式,主要思路是通过平台公开的页面编码内容进行请求命令的构造,并对返回的数据进行分析和提取,具体方法与前面第五章介绍的方法类似。提纲微博信息采集方法概述微博开放平台授权与测试使用Python调用微博API采集数据通过爬虫采集微博在调用微博之前,需要事先获取用户身份认证,这是指在开放平台上的认证,而非普通用户登录微博时的认证。微博开放平台用户身份鉴权主要采用OAuth2.0认证方式,平台授权的最终是获得访问令牌(access_token)。使用该令牌和用户身份(uid)就可以在Python程序中调用API,实现微博信息的采集。获取access_token的流程(1)创建微博用户,并登录微博();(2)进入“微博接口测试工具”(/tools/console),如果还没有创建应用,则根据页面提示创建一个应用。如果已经有应用,则转步骤(4)。创建应用(3)创建成功后,进入应用控制台。在OAuth2.0授权设置中,填写“授权回调页”为

/oauth2/default.html

。(4)填写完成后,再次进入“微博接口测试工具”,可以看到API测试工具页面。点击“获取AccessToken”可以获得该应用的令牌在微博接口测试工具中测试API的调用上图中展示了获取微博用户信息的API,其对应的API是“users/show”,相应的API参数要查阅微博API文档。这里使用用户的昵称来获取用户信息,点击“调用接口”后可以看到右边的请求URL、参数以及返回的JSON数据。提纲微博信息采集方法概述微博开放平台授权与测试使用Python调用微博API采集数据通过爬虫采集微博流程介绍微博API及使用方法微博API微博官方提供给开发人员的一组函数调用接口,这是一种在线调用方式,不同于普通语言所提供的函数。根据输入的参数返回相应的数据,其范围涵盖用户个人信息、用户的粉丝和关注、用户发布的博文、博文的评论等等。向接口发送HTTP请求,接口就会返回所对应的JSON格式数据。新浪微博提供的API有九大类,即:粉丝服务接口、微博接口、评论接口、用户接口、关系接口、搜索接口、短链接口、公共服务接口和OAuth2.0授权接口。最新的接口及功能可以到官方网站查阅:/wiki/%E5%BE%AE%E5%8D%9AAPI。用户类API名称及功能读取接口users/show获取用户信息users/domain_show通过个性域名获取用户信息users/counts批量获取用户的粉丝数、关注数、微博数评论类API名称及功能读取接口comments/show获取某条微博的评论列表comments/by_me我发出的评论列表comments/to_me我收到的评论列表comments/timeline获取用户发送及收到的评论列表comments/mentions获取@到我的评论comments/show_batch批量获取评论内容写入接口comments/create评论一条微博comments/destroy删除一条我的评论comments/destroy_batch批量删除我的评论comments/reply回复一条我收到的评论使用方法对于每个API,新浪微博规定了其请求参数、返回字段说明、是否需要登录、HTTP请求方式、访问授权限制(包括访问级别、是否频次限制)等关键信息。其中,请求参数是API的输入,而返回字段是API调用的输出结果,一般是以JSON的形式进行封装。HTTP请求方式支持GET和POST两种,访问授权限制则规定了客户端调用API的一些约束条件。

必选类型及范围说明access_tokentruestring采用OAuth授权方式为必填参数,OAuth授权后获得。idtrueint64需要获取的微博ID。返回值字段字段类型字段说明created_atString微博创建时间Idint64微博IDreposts_countInt转发数comments_countInt评论数TextString微博信息内容#接口对应的URL,每个API对应一个URL,可以在在线开发文档页面查看url='/2/statuses/show.json'

#请求参数:access_token和微博的idurl_dict={'access_token':access_token,'id':wid}url_param=parse.urlencode(url_dict)

#发起请求res=requests.get(url='%s%s%s'%(url,'?',url_param),headers=header_dict)

#解析返回的jsondecode_data=json.loads(res.text)

#提取text字段的内容text=decode_data['text']错误处理错误代码错误信息详细描述10002Serviceunavailable服务暂停10004IPlimitIP限制不能请求该资源10012Illegalrequest非法请求10013Invalidweibouser不合法的微博用户10022IPrequestsoutofratelimitIP请求频次超过上限10023Userrequestsoutofratelimit用户请求频次超过上限例1:采集微博用户个人信息微博用户的个人信息包括用户昵称、简介、粉丝数、关注数、微博数等,通过调用微博开发接口API可以得到这些个人信息数据。该接口为users/show,请求参数如表9-6所示,其中参数uid与screen_name二者必选其一,且只能选其一个。代码及解释见教材例2:采集微博博文使用微博API获取博文主要涉及到两个接口,即statuses/user_timeline/ids和statuses/show。前者用于获取用户发布的微博的ID列表,后者是根据微博ID获得单条微博信息内容,包括文本内容、图片以及评论转发情况等。具体代码及解释见教材微博API的限制微博开放接口限制每段时间只能请求一定的次数。超过频次限制的过度调用、或者是非用户主动行为频繁调用(即使未超过频次限制)微博开放接口,会造成该应用、IP的接口访问权限被封禁,造成所有开放接口的请求都会被限制。微博开放平台禁止第三方服务器端存储用户数据,所以采用此方法只能缓存在客户端,不能上传到外部服务器。提纲微博信息采集方法概述微博开放平台授权与测试使用Python调用微博API采集数据通过爬虫采集微博通过微博API虽然可以很方便地采集到所需要的信息,而不需要像爬虫那样进行大量的页面信息分析和提取。但是,微博API在调用频次、返回数据记录数等方面有一定限制,因此,如果需要大量地采集微博信息的话,微博API就难于满足需求。先手工登录微博,通过浏览器F12页面跟踪得到cookie,作为后续自动登录的依据。1.利用微博PC版进行命令发送与结果的采集一种途径是找到AJAX动态加载的请求地址直接获取AJAX内容,但是当遇到加密的JS时,要分析并找到请求地址就会非常困难。另一种途径是使用无界面浏览器,基于模拟浏览器方式执行js代码以获取完整html内容。其缺点是,执行速度慢。2.通过微博的移动端网页来采集内容目前国内外主流的微博都提供了移动端接入方式,移动端网页和PC端网页的入口不同,页面结构存在一定差异。一般情况下,移动端页面并不采用AJAX技术,而是可以直接提取。但是与PC版网页相比可能缺失部分内容。微博博文回帖采集教材里展示了一个微博热搜的采集方法,与此类似,这里采集某个博文的回帖。通过跟踪得到响应的URL查看相应的JSONu="/ajax/statuses/buildComments?is_reload=1&id=5139011190918405&is_show_bulletin=2&is_mix=0&count=20&type=feed&uid=1989660417&fetch_level=0&locale=zh-CN"records=[]#该函数与教材一致,只是user-agent和cookie替换成为前面跟踪获得相应信息data=getURLconent(u)qiuzhus=json.loads(data)plist=qiuzhus['data']forpinplist:rec=[]try:rec.append(p[‘created_at’])#回帖时间rec.append(p[‘text‘])#回帖内容records.append(rec)exceptKeyError:continueprint(records)#显示采集到的回帖部分内容如下,可见获得了正确的内容。登陆成功后,采集微博信息本质上就是获取到微博平台返回的HTM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论