python 有趣的爬虫_Python有趣|微博榜单爬虫,尽知天下事

本文介绍了如何使用Fiddler配置并抓取微博APP的榜单数据,通过Python实现爬虫代码,抓取用户信息并进行数据可视化,包括明星排行、地区分布、性别比例等分析。
摘要由CSDN通过智能技术生成

62f10dfd152d656cdd67ea9fcd4e8344.png

项目背景

大家对于网页的数据爬虫了解的已经很多了,这次爬取APP端的数据。之前我也讲解过APP爬虫,但是没有讲解过Fiddler的配置和使用。这次以微博榜单为案例,介绍APP爬虫流程和数据的可视化(数据为2019年2月28号采集)。整个项目流程如下图所示:

4e368e52cf548a574403ab8833ab8076.png

环境配置

首先,在网上下载Fiddler软件,这个和普通的软件安装一样,这里就不详细讲解了。

接着,我们打开Fiddler软件,进行配置,打开tools-options,进行如下的设置。

选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求;

选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来。

45b62f69c2f15ded56c2478ec76eb9be.png

7e6f01634aa53096a0b4d7a69d6393e0.png

设置完记得重启软件~

为了让Fiddler截取手机的包,需要让手机和电脑在同一个ip下,在电脑端的cmd中输入:ipconfig,获取电脑ip地址。

771136fe0e5f0b277c6ee76f6f0bacc7.png

接着打开手机(以IPhone为例),打开wifi,配置代理,这里的代理就是上图我们查询的ip地址,8888为端口号。

670bc7d7ef41d7d3d12b98e8cb3a31a9.png

626c1387629bad8a3ca0455377ef2c43.png

最后,在手机浏览器输入http://192.168.0.144:8888,点击下载证书,IPhone最后还需要在设置中信任证书,这样就可以用Fiddler抓取手机的包啦。

e7efe637628c0176cb9c09cc7ed4144f.png

cba52933da81e92eaf42964d3c6f8af7.png

找包

我们打开Fiddler找包,发现这是一个POST请求,下面就是请求的参数,max_id改变就是换页。

7f3d7213e52b0e36a068e95223c6dead.png

爬虫代码

这样,我们就可以写出完整代码了。

importrequests

importjson

importcsv

importtime

fp=open('weibo.csv','w',newline='',encoding='utf-8')

writer=csv.writer(fp)

writer.writerow(['user','location','gender','followers','text','created_time','comments','good'])

url='https://api.weibo.cn/2/statuses/unread_hot_timeline?gsid=_2A25xXl6mDeRxGeNM41oV-S_MzDSIHXVQStVurDV6PUJbkdANLVTwkWpNSf8_0kSaOWZtWP9k_mbYuGWoJ6k7Z2E_&sensors_mark=0&wm=3333_2001&i=b9f7194&sensors_is_first_day=false&from=1092093010&b=0&c=iphone&networktype=wifi&skin=default&v_p=71&s=a8064444&v_f=1&sensors_device_id=1962A632-B40D-4337-A4C6-3F9AB979B517&lang=zh_CN&sflag=1&ua=iPhone8,1__weibo__9.2.0__iphone__os12.1.4&ft=11&aid=01AuxGxLabPA7Vzz8ZXBUpkeJqWbJ1woycR3lFBdLhoxgQC1I.&cum=21171544'

headers={

'Host':'api.weibo.cn',

'Content-Type':'application/x-www-form-urlencoded; charset=utf-8',

'User-Agent':'Weibo/29278 (iPhone; iOS 11.4.1; Scale/2.00)'

}

params=['refresh=loadmore&group_id=1028038999&extparam=discover%7Cnew_feed&fid=102803_ctg1_8999_-_ctg1_8999_home&uicode=10000495&count=25&trim_level=1&max_id={}&trim_page_recom=0&containerid=102803_ctg1_8999_-_ctg1_8999_home&fromlog=1028038999&uid=5288491078&refresh_sourceid=10000365&featurecode=10000001&lastAdInterval=-1&need_jump_scheme=1'.format(str(i))foriinrange(1,16)]

forparaminparams:

res=requests.post(url,headers=headers,data=param)

json_data=json.loads(res.text)

statuses=json_data['statuses']

forstatuseinstatuses:

user=statuse['user']['name']

location=statuse['user']['location']

gender=statuse['user']['gender']

followers=statuse['user']['followers_count']

text=statuse['text']

created_time=statuse['created_at']

comments=statuse['comments_count']

good=statuse['attitudes_count']

print(user,location,gender,followers,text,created_time,comments,good)

writer.writerow([user,location,gender,followers,text,created_time,comments,good])

time.sleep(2)

榜单分析

上榜明星,通过对用户昵称计数,看看哪些用户上榜最多。上榜的大多是明星和娱乐号主。

ab674d60d368cb580aa1f082d719ad20.png

地区分布,上榜的地区分布,可以看出大部分都来自北上广,然后海外用户也是有很多的(有些明星是外籍)。

dc1a50cd27e0af30f292e43a9c5abd5c.png

性别分布,男性和女性分布较平均,男性更多一些~

b40fd33980fc5fd47264b1593d63e9af.png

榜单发布时间和词云图,可以看出,晚上8点是个高峰期,这个点刚好下班吃瓜。

68b38033f22841eb1701283be6884849.png

63e07cd55d358cd854455ce026f53886.png

今日互动

代码下载:https://github.com/panluoluo/crawler-analysis,下载完整代码。

留言打卡:现在小鲜肉当道,说说你最喜欢的老戏骨是哪个。公众号后台回复【打卡】,加入打卡学习群,2019年一起搞事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值