爬取微博用户数据

前言

微博数据基本上可以说是社交圈里面最大的了。但是单纯的使用urllib,是不足以获取数据的。

今天来使用Cookie的方式绕开微博权限验证这一关卡, 爬取一下数据。

查找的过程

打开ChromeF12之后,刷新页面,真的是眼花缭乱的数据流啊,飞流直下。找了好久,发现大部分数据都是通过JavaScript脚本渲染到页面上的。

这也就是为什么单纯的使用urllib抓不到的原因了。因为这是动态页面,而Urllib则是抓取静态页面。明白了这一点,就找到了方向了。

那就是找到数据源接口。后来经过我的仔细审核,发现了类似于这样的一个URL。

http://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=103505&is_search=0&visible=0&is_hot=1&is_tag=0&profile_ftype=1&page=2&pagebar=0&pl_name=Pl_Official_MyProfileFeed__23&id=1035051198367585&script_uri=/kqdpku&feed_type=0&pre_page=2&domain_op=103505&__rnd=1495367966928
接口数据源

然后发现服务器端返回的数据内容是JSON格式的。大致内容如下;

关联页码的服务器端返回的数据

然后这姑且算是找到一个人的数据了吧。那么问题接着来了,如果我想看其他人的页面怎么办呢?

思路有如下两个:

  • 一是按照刚才的方法,一个个的去查找。(费时费力,不赞同)
  • 二是走捷径,对比URL,我们会发现一个domain的参数,而对应的值就是目标博主的ID。
    比如我要看刘强东的主页,http://weibo.com/p/1003061866402485/home?from=page_100306&mod=TAB&is_hot=1#place
    里面的from参数的page值后面的数据就是我们需要的domain值了。拿过来就可以直接使用。

核心

经过了刚才的各种铺垫,下面直接上代码。体验一把吧。

# coding: utf8

# @Author: 郭 璞
# @File: login.py                                                                 
# @Time: 2017/5/21                                   
# @Contact: 1064319632@qq.com
# @blog: http://blog.csdn.net/marksinoberg
# @Description: 新浪微博登录测试

import requests
import json
from bs4 import BeautifulSoup
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
    'Host': 'weibo.com'
}

Cookies = {
    "Cookie": "SCF=Asl3BNSxfmhmaP2cIVfnvOp-mmfHwOPYfdoMZIz6y4WtkH4xK0jdB0Hr0Tll4RzJ0xUHIi5HOLBAjEASrqSGDiQ.; SUB=_2A250JQA2DeThGeNI41UX8ifJyziIHXVXU3b-rDV8PUNbmtBeLWbGkW9yh-AUBKZFFYCHZ2zA0zH1I-l4dg..; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5yNOfs44nTEDRpARDUs7Yl5JpX5K2hUgL.Fo-c1hMceo.fehB2dJLoIcBLxK-LBo5L12qLxK-LBo5L12qLxK-LBo5L12qLxK-LBo5L12qLxK-LBo5L12qpi--fi-z7iKysi--fi-z7iKysi--Ni-z0i-8si--Ni-zpi-z0i--fiKLFi-2Ei--fi-82iK.7; SUHB=0HTxO_F0SbtSsP; ALF=1526899685; SSOLoginState=1495363686; YF-V5-G0=8d4d030c65d0ecae1543b50b93b47f0c; _s_tentry=my.sina.com.cn; Apache=9206065364153.127.1495363942807; SINAGLOBAL=9206065364153.127.1495363942807; ULV=1495363942825:1:1:1:9206065364153.127.1495363942807:; YF-Page-G0=fc0a6021b784ae1aaff2d0aa4c9d1f17; YF-Ugrow-G0=ea90f703b7694b74b62d38420b5273df; wvr=6; wb_publish_fist100_5687629504=1; UOR=blog.csdn.net,widget.weibo.com,www.sina.com.cn"
}


# 刘强东
url = 'http://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=103505&is_search=0&visible=0&is_hot=1&is_tag=0&profile_ftype=1&page=2&pagebar=0&pl_name=Pl_Official_MyProfileFeed__23&id=1035051198367585&script_uri=/kqdpku&feed_type=0&pre_page=1&domain_op=100306&__rnd=1495367966928'
response = requests.get(url=url, headers=headers, cookies=Cookies)

data = json.loads(response.text)

result = data['data']

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

blogs = soup.find_all('div', {'class': 'WB_detail'})
for blog in blogs[0:8]:
    print("微博发文:", blog.find_all('div')[2].get_text())
    # 为了减少控制台内容输出,这里注释掉即可
    # print("配图:", blog.find_all('div', {'class': 'media_box'}))
    print('======='*36)

# WB_innerwrap

运行结果如何呢?

C:\Users\biao\Desktop\network\env\Scripts\python.exe C:/Users/biao/Desktop/network/code/sina/login.py
微博发文: 
                                                                                                    骗人,南通没有普洱!//@普洱玫瑰汤:啊哈,我也是南通人呢。                                            
===========================================================
微博发文: 
                                                                                                    回复@流氓无产者刘爷:即使那样死了,无耻的看客们还要说不过瘾哩。//@流氓无产者刘爷:不仅不应该收费,还应该累死饿死是不?还应该绑着炸弹跟恐怖分子对炸去是不?还应该拎着菜刀跟汉奸对砍去是不?说话之前掂量掂量自己,考虑考虑别人不行么?                                            
===========================================================
微博发文: 
                                                                                                    给队里多买点。                                            
===========================================================
微博发文: 
                                                                                                    聪明。//@遇见那兵荒马乱:还是那天红场阅兵那天您阅的未名湖吗?                                            
===========================================================
微博发文: 
                                                                                                    你这眼神啊!//@鐵匠--孫:上面怎么还有肉渣渣,还是馋嘴                                            
===========================================================
微博发文: 
                                                                                                    这哥俩才超过五百。                                            
===========================================================
微博发文: 
                                                                                                    顺也是一种孝,但不可机械教条。//@夜半有人私语时:以前只知道“以顺行孝”,原来也可以“以谏行孝”。谢谢孔老师。                                            
===========================================================
微博发文: 
                                                                                                    美梦与歹命。我回答了 @NEW七七 的问题,问题价值¥433.00,大家快来花1元围观~ O微博问答 ​​​​                                            
===========================================================
Process finished with exit code 0

如此,微博数据也能搞到手了。

总结

使用Cookie绕开登录选项,确实是一个比较好的捷径。但是由于时效的问题,治标不治本。

从上面的结果也可以看出,这里简单的打印出了前几条数据内容。也算是抛砖引玉了。而且对比网页源码之后,我发现了更多好玩的数据源。图片,短视频,都会是很好的素材。

然后对XX进行文本分析,做成词云啊,或者做一下社交网络分析啊等等。

今天其实真的是太闲了,所以才搞了一下微博数据的爬取。文章内容,排版都挺失败的。(⊙﹏⊙)b

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容