python为什爬去微博热门事件么叫爬虫 基于python的微博数据采集

admin 3250 19
python为什爬去微博热门事件么叫爬虫 基于python的微博数据采集

百度网盘课程

通用入口链接!10000G.课程都有!一起学习吧!

立即点击↓ 获取课程!

python为什么叫爬虫 基于python的微博数据采集

微博数据抓取

作为自然语言处理的入门级任务,我们只需要获取微博和微博的语料资源,然后进行分词等一系列操作,就可以完成简单的特征提取和谣言分析。但是,获取这个数据源需要很长时间的学习。

准备工作:

1.申请开发商许可

特定链接:

2.创建微博应用

新手指南

官方文件中给出的新手指南可以作为参考

3得到,

在微连接中输入移动应用(或web应用),申请新的应用;在基础信息获取的应用信息中,

特定链接:

请务必在左侧的选择管理中心-我的应用程序-展开应用程序信息-高级信息-授权2.0授权设置中编辑和添加回拨地址

(初试只需填写公司首页,两个网站可以一样。)这时,我们填上了:http://api.weibo.com/oauth2/default.html

如果未填写回拨地址,将会出现以下错误:

4.获取访问令牌(尚未理解)

(1)下载并安装微博python SDK(sinawibopy)

(但是这个版本只支持python2.6-python2.7)对于现在正在用python3.6开发的人来说是灾难。

微博API测试界面:http://open.weibo.com/tools/console

5授权2.0授权

微博的调用开放界面,比如发微博,关注等。都需要获得用户身份认证。目前OAuth2.0主要用于微博开放平台的用户身份认证。官方文档有非常详细的说明,了解授权机制有助于使用SDK编写程序的过程。

6下载并安装新浪微博PythonSDK

打包下载新浪微博官方PythonSDK。网页显示有两种安装方式。第一种方式是使用命令行工具pip,第二种方式是下载源码包。

对于第一种安装方式,pip是Python的包管理工具,可以轻松安装Python模块。安装成功后,只需在命令行(或linux终端)上执行pipinstallsinaweibopy,就会安装SDK包sinaweibopy。要测试安装是否成功,可以在python命令行输入:importweibo,如果没有错误提示,安装成功。其实PythonSDK主要是微博这个模块,后来用SDK的时候调用这个模块中的函数。

对于第二种方法,需要将下载的源代码复制到安装目录或者配置Python模块搜索的Path。

7.读写微博界面程序

可以在下面调用微博API写微博操作程序,下面简单介绍一个抓取微博数据的程序。

大姐给的代码:

#_*_coding:utf-8_*_

进口

sys reload(sys)sys . setdefaultencoding(' utf-8 ')from Weiboimportipientinimportjsonimportwebbrowserimportioapp _ KEY=' ' # #填写应用程序信息app _ secret=' ' CALLBACK _ URL=' https://api.weibo.com/oauth2/default.html'客户端=apiclient (app _ key=app _ key,app _ secret=app _ secret,redirect _ uri=CALLBACK _ URL)URL=client . get _ authorize _ URL()# todo 3360 redirecttourlwebrowser . open _ new(URL)# print URL # get URL code 3strip()client=API client(APP _ KEY=APP _ KEY,app_secret=APP_SECRET,The redirect _ uri=callback _ URL)r=client。request _ access _ token(代码)access _ token=r .新浪返回的access _ token # token。UNIX时间类似于ABC 123 XYZ 456 expires _ in=r . expires _ in # token expires:http://zh.wikipedia.org/wiki/UNIX时间#TODO:您可以在这里保存accesstokenclient。set _ access _ token (access _ token,Expires _ in)RES=client . stats . public _ timeline . get(count=200)# #返回最近200条热门微博# RES=client . stats . user _ timeline . get()# #返回作者# RES=client . stats . friends _ timeline . ids . get()# #返回好友# RES=client . emotions . get()a=JSON . dumps(RES,survey _ ascii=fal

se,indent=2)fout=io.open('test','w',encoding='utf-8')fout.write(a)

运行Python程序,将回调页面的code=后面的一串字符,输入pycharm的输出窗口,就可以获得返回信息

我自己稍作修改代码部分:

#encoding:utf-8

#这段代码确实可以返回消息,但是不清楚返回的具体是什么含义

#下面进行具体的分析

import

python为什么叫爬虫 基于python的微博数据采集

sysimportsimplejsonreload(sys)sys.setdefaultencoding('utf-8')fromweiboimportAPIClientimportjsonimportwebbrowserimportioAPP_KEY='17926..'APP_SECRET='fc0b5b2a97c...'CALL_BACK='https://api.weibo.com/oauth2/default.html'#廖雪峰网站提供的用户授权的方法client=APIClient(app_key=APP_KEY,app_secret=APP_SECRET,redirect_uri=CALL_BACK)url=client.get_authorize_url()#TODO:redirecttourl对url重定向printurlwebbrowser.open_new(url)#obtainurlcode#根据授权网址中携带的code=,将code输入到输出框中#code=your.web.framework.request.get('code')code=raw_input("inputthecode:").strip()print'code是:',codeclient=APIClient(app_key=APP_KEY,app_secret=APP_SECRET,redirect_uri=CALL_BACK)#获取用户授权r=client.request_access_token(code)print'r的内容是:',r#保存access-token,expires_inaccess_token=r.access_token#新浪返回的token,类似于abc123xyz456print'access_token是:',access_token#打印本应用的access_tokenexpires_in=r.expires_in#token过期的unix时间#TODO:在此可保存accesstoken#设置得到的access_token,expires_in,client就可以直接调用API了client.set_access_token(access_token,expires_in)#res=client.statuses.public_timeline.get(count=10)#返回最新的10条微博#res=client.statuses.public_timeline.get()#res=client.statuses.friends_timeline.ids.get()#返回作者好友的id#res=client.emotions.get()res=client.statuses.public_timeline.get()#返回最新的公共微博response=client.users.show.get(uid=****)#获取光明日报的id获取用户信息print'打印response的信息',responseres_comment=client.comments.show.get(id=****22766)#获取指定微博id的评论print'打印指定微博的评论信息',res_comment#res=client.statuses_public_timeline.get()['statuses']#length=len(res)print"打印res的信息",resprinttype(res)##输出部分信息#foriinlength:#print'微博创建时间'+res[i]['created_at']#print'昵称'+res[i]['user']['screen_name']#如何解析weibo.JsonDict格式的微博返回的数据?#json.dumps的作用是将python对象转化成JSON字符串a=json.dumps(res,ensure_ascii=False,indent=2,sort_keys=True)printtype(a)data=a.encode('utf-8')printtype(data)data_json=json.loads(data)printtype(data_json)printdata_json['hasvisible']length=len(data_json['statuses'])printlengthprintrange(length)foriinrange(length):printdata_json['statuses'][i]['id']fout=io.open('test.csv','w',encoding='utf-8')fout.write(a)

接下来研究一下返回的数据都是些什么,也就是API的调用及数据获取了、

response是根据用户id获取用户信息,返回的response内容发现与真实的用户信息有些出入

因此注意到API接口页的说明,注意事项:接口升级后,对未授权本应用的uid,将无法获取其个人简介、认证原因,粉丝数,关注数,微博数及最近一条微博内容。

可能是升级后的接口对获取指定用户的信息时做了处理,如果你要访问的微博用户并未给你这个应用授权,你将无法获取该微博用户的上述的信息。

{'cover_image':u'http://ww3.sinaimg.cn/crop.0.0.920.300/539fbe80gw1evtp2jew2kj20pk08cdhu.jpg','bi_followers_count':96,'domain':u'','avatar_large':u'http://tva3.sinaimg.cn/crop.0.0.179.179.180/539fbe80gw1ev7mtyemxjj2050050q2y.jpg','cardid':u'star_583','verified_source':u'','ptype':0,'block_word':0,'cover_image_phone':u'http://ww1.sinaimg.cn/crop.0.0.640.640.640/549d0121tw1egm1kjly3jj20hs0hsq4f.jpg','statuses_count':0,'id':****,'verified_reason_url':u'','city':u'1000','like_me':False,'verified':True,'friends_count':0,'verified_reason_modified':u'','credit_score':80,'insecurity':{'sexual_content':False},'block_app':1,'follow_me':False,'has_service_tel':False,'verified_reason':u'','verified_type_ext':0,'location':u'北京','followers_count':0,'verified_state':0,'verified_trade':u'','mbtype':11,'verified_source_url':u'','profile_url':u'u/****','status':{},'avatar_hd':u'http://tva3.sinaimg.cn/crop.0.0.179.179.1024/539fbe80gw1ev7mtyemxjj2050050q2y.jpg','star':0,'description':u'','verified_contact_email':u'smq@gmw.cn','online_status':0,'mbrank':3,'verified_level':3,'profile_image_url':u'http://tva3.sinaimg.cn/crop.0.0.179.179.50/539fbe80gw1ev7mtyemxjj2050050q2y.jpg','idstr':u'****','verified_contact_mobile':u'010-67078363','allow_all_act_msg':False,'screen_name':u'光明日报','vclub_member':0,'allow_all_comment':True,'geo_enabled':False,'class':1,'name':u'光明日报','lang':u'zh-cn','weihao':u'','remark':u'','favourites_count':162,'like':False,'url':u'','province':u'11','created_at':u'ThuJun0223:39:47+08002011','verified_contact_name':u'孙明泉','user_ability':10814208,'story_read_state':-1,'verified_type':3,'gender':u'm','following':False,'pagefriends_count':0,'urank':41}

调用接口client.comment.show

res_comment=client.comments.show.get(id=****22766)#获取指定微博id的评论

print‘打印指定微博的评论信息’,res_comment

返回指定微博的评论

微博的api接口返回的数据较冗余,庞杂,需要根据需要进行清理

下面是接口返回的信息实例

'status'

:{'reposts_count':23,'mlevel':0,'truncated':False,'text':u'【杭州一所小学养了两匹马学生通过社会实践筹集马粮】近日,杭州滨和小学引进两匹纯英国进口的舍特蓝小马。5岁的小马来到学校后深受学生喜爱,他们将通过义卖形式的社会实践活动为小马筹集粮食。校长说,是为了培养孩子们的责任感,同时也是为了探索情绪交往课程。(浙江在线)http://t.cn/R1LmQin​','more_i

相关阅读

  • 小贝“引爆”同济校园 警察软组织挫伤
  • 围观微博网友发起的美胸比赛学习爬取微博评论内容
  • 从爬取微博中搜索的热门事件到数据分析处理全过程(一)
  • python 计算机程序设计语言
  • 热门话题榜2019年 微博热门话题排行榜
  • 爬去微博热门事件
  • 爬去微博热门事件
  • 热门话题榜2019年 微博热门话题排行榜
  • python为什爬去微博热门事件么叫爬虫 基于python的微博数据采集
  • 版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

    本文地址:http://0561fc.cn/4220.html

    标签: #爬去微博热门事件