获取社交网络数据的方式汇总

网络型数据挖掘是一项主流的、重要的数据挖掘技术,常见的如社交网络、购物网络、金融网络等网络类型在生活中无处不在,做好网络挖掘可在用户画像、产品推荐、流言信息传播、金融风险评估、城市交通优化方面产生极大作用。

获取的数据“好坏”很大程度决定了数据分析/数据挖掘研究的效果,尤其是社交网络数据,收藏一些好的数据集尤为重要,不一定多但一定要优质。

开放数据集

主要推荐:snap网站

(http://snap.stanford/edu/data/index.html)

*斯坦福教授创立的网络分析实验室建立的网站,其公布了研究过程中非常多的数据集。

其中推荐:social networks里面的soc-Pokec 数据集。

它是一个全量的捷克斯洛伐克的一个社交网站数据集,

不仅包含了社交网站中点和边的数据;

同时包含了user profiledata(即每个用户具备的属性),如性别、注册时间、年龄、工作领域、婚姻/孩子状态……,其丰富程度几乎是公开数据集中能够下载到的最好之一了,如果你要做跟用户属性相关的分析研究或算法实验,这是个很好的选择;

与此同时,它还包含了整个网站上所有用户的关系,如果凭自己抓取,那只是网站上的部分采样,而这个稳定的全量数据则代表了整个网络的特征,对我们的分析解释和逻辑思维的严谨性是有好处的。

另一个推荐的是:location-based online social networks,其中有两个叫loc-Gowalla、loc-Brightkite 数据集。

这类的社交网站主要是由人的checking-in(签到)组成,虽然这类网站已经没落了,但是保留下来的数据依然能够帮助我们分析用户线上和线下的行为联系,数据集中除了点和边的数据,还有用户的好友关系、地理空间等数据。

其他开放数据集站点:UCI、CAWDAD(它们不只有社交网络数据集)

当然,竞赛网站中公开的数据集也可以时不时去关注下载。

网站爬虫

1.基于网站API的爬虫

2.基于网页的爬取

实例:豆瓣爬取好友信息

Step1:找到代表好友关系的网址(要爬取的信息所在网址)

https://www.douban.com/people/doubanlocation/rev_contacts

Step2:找到目标用户的id,比如上图中目标用户“关注豆瓣同城的人”在网址中的ID为“doubanlocation”,由此,切换网址中“people/”之后的ID就可以抓取不同人的好友。

Step3:使用beautifulsoup来抓取数据的具体操作

1)载入需要的包

importrequests

frombs4importBeautifulSoup

fromhttp.cookiesimportSimpleCookie

#利用SimpleCookie这个包来解决登陆网页时遇到的障碍#

#展示不完全时可左右滑动代码块#

2)利用cookie模拟登陆,并抓取网页信息

步骤:浏览器工具栏——更多工具——开发者工具——network——刷新用户信息(contacts)网页——headers——requestheaders——cookie复制

cookie_str ='粘贴cookie的内容'

cookie = SimpleCookie()

#利用SimpleCookie包来解析cookie内容(转化成键值对)#

cookie.load(cookie_str)

#载入cookie字符串#

cookies = {}

forkey, morselincookie.items():

cookies[key] = morsel.value

print(cookies)

#展示不完全时可左右滑动代码块#

url='https://www.douban.com/people/doubanlocation/rev_contacts'

r= requests.get(url,cookies = cookies)

html= r.content#访问url获取html文本#

soup= BeautifulSoup(html, ‘html.parser')

#构造html的具体实例,设置解析器的具体名字#

print(soup.prettify())

#将html格式以规范的形式输出,并且补全#

#展示不完全时可左右滑动代码块#

3)抓取用户id信息

contacts=soup.find_all(name=‘dl’)

#将好友信息所在的dl字段抓取下来#

forcontactincontacts

url_contact=contact.find(name=‘a’)[‘href’]

#将信息字段中id所在的网址信息抽出来#

contact_id=url_contact.split(‘/‘)[-2]

#取网址中倒数第二个代表用户id的元素#

print(contact_id)

#得到该页面显示的关注豆瓣同城的用户id列表#

#展示不完全时可左右滑动代码块#

以上,就完成了用户id信息的抓取任务。

当然,这也只是社交网络挖掘的第一步,当数据获取到足够丰富的时候,就可以进一步探究社交网络挖掘的算法,如好友推荐、属性推理、组群挖掘、消息传播等等,这些内容都在王乐业老师的新课《网络挖掘》中做了丰富的讲解,并带你一步步实现:

不仅如此,还包括其他四类主流的网络类型:购物网络、金融网络、交通网络、医疗网络。这些类型各自的网络特性、数据集、网站爬虫、挖掘算法、python实现、数据可视化内容都能通过学习这门课来掌握;

更重要的是,通过这门课的学习,你可以获得其他的分析方法得不到的深刻洞见,并以此指导实际业务中的决策;你能够通过网络挖掘去构建真正的商业模型,比如社交推荐与消息传播模型、商品推荐系统、金融风控模型、这才是数据真正产生价值的地方。

课程新鲜出炉,首发价格¥399(原价499)

限时一周,长按下方二维码,获取课程

课程其他信息:

Q:课程是录播还是直播课?

课程采用精修录播形式,含金量更高,你可以自由安排学习时间和频率,有效期内可反复观看。

Q:课程的更新进度如何?

目前课程视频已上线前两章,后四章会以每周2节的频率上线完毕。

Q:课程有效期多久?

课程有效期从课程视频全部上线完成后算起,有效期为6个月(一般2-3个月即可学完本门课程),所以,提前购买期限越长哦。(设置期限是因为我们知道拖久了就会放弃,当然,你可以通过积分再延长6个月,加起来就有一年的学习时间)

Q:课程使用什么语言/编程工具?

Python/anaconda

Q:需要准备什么基础?

课程中的每行代码都会讲解它的意义,所以零基础也能顺利跟着老师走下去,你需要的,就是带上一颗充满好奇心和求知欲的心灵!

Q:课程中的代码会分享么?

我们会将课程中的代码打包,在学习入口的每节课程资料中呈现,可以随时下载,同时还会有更多的延伸案例及拓展知识。

Q:课程有助教和答疑么?

开通课程后,可在课程视频播放页添加班主任,验证后可加入学习群,助教会每天在群内答疑,同时我们也会收集大家的共性问题整理学习资料并分享。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180815A0OPC000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券