美文网首页
东京奥运会禁止握手,为何还要发15万只避孕套?Python爬虫告

东京奥运会禁止握手,为何还要发15万只避孕套?Python爬虫告

作者: 途途途途 | 来源:发表于2021-08-06 10:00 被阅读0次

东京奥运会禁止选手握手,却发15万个避孕套?

主办方解释:

希望运动员们将套套带回家,预防相关疾病!

另一方面发套也是奥运会、世界杯的传统

成年人总会有生理需求的时候,当然奥运选手也不例外。

在历史的莫斯科奥运会时,因为当时的避孕条件并不普及,

俄罗斯在运动会之后就出现了许多的奥运宝宝

例如一些拉丁美洲,亚洲的混血儿。

在此之后,奥运会主办方就开始对发套套这件事情十分重视了,在1992年的巴塞罗那奥运会,主办方就疯狂采购了一批避孕套。

在2000年的新年奥运会上,主办方也在奥运村放这了七万个避孕套,但是在奥运会期间却不得不又补充了两万个避孕套。

而在16年的里约奥运会期间,巴西为奥运村的运动员们,提供了总共45万个避孕套。这个数字也是奥运有史以来发放避孕套的最高记录了。

当年,伦敦市长也曾吐槽过:“奥运会的口号是激励下一代,而不是创造下一代。”

需求分析

网友们都是如何看待这一操作的呢?

八千评论告诉你

我们要获取的数据如有微博评论下的

用户id、用户名称、用户座右铭、发帖时间和发帖内容。

网页分析

F12打开浏览器开发者模式,找到如下链接。

经过测试发现,目前它是通过Js经行渲染的,想通了这一点,那就可以马上去找接口了。

可以看到我们所有爬取的评论信息全在在一个的json文件当中

发送请求

我们首先模拟浏览器来发送请求获取到这个json数据集,然后获取具体的

用户id、用户名称、用户座右铭、发帖时间和发帖内容

url ='https://m.weibo.cn/comments/hotflow?id=4659897109841690&mid=4659897109841690&max_id_type=0'

print('当前url是:', url)

headers = {

'cookie':'SUB=_2A25NyTOqDeRhGeVG7lAZ9S_PwjiIHXVvMl3irDV6PUJbktB-LVDmkW1NT7e8qozwK1pqWVKX_PsKk5dhdCyPXwW1; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFGibRIp_iSfMUfmcr5kb295NHD95Q01h-E1h-pe0.XWs4DqcjLi--fi-2Xi-2Ni--fi-z7iKysi--Ri-8si-zXi--fi-88i-zce7tt; _T_WM=98961943286; MLOGIN=1; WEIBOCN_FROM=1110006030; XSRF-TOKEN=70a1e0; M_WEIBOCN_PARAMS=oid%3D4648381753067388%26luicode%3D20000061%26lfid%3D4648381753067388%26uicode%3D20000061%26fid%3D4648381753067388',

'referer':'Referer: https://m.weibo.cn/detail/4665088419561949',

'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4573.0 Safari/537.36'

}

resp = requests.get(url, headers=headers).json()

ic(resp)

部分截图如下:

上一步已经成功模拟浏览器获取到了数据。

接下来就是如何在其中提取出我们的目标数据

for item in wb_info:

user_id = item.get('user')['id']# 用户id

author = item['user']['screen_name']# 作者名称

auth_sign = item['user']['description']# 作者座右铭

time = str(item['created_at']).split(' ')[1:4]

rls_time ='-'.join(time)# 发帖时间

text =''.join(re.findall('[\u4e00-\u9fa5]', item['text']))# 发帖内容

ic(user_id, author, auth_sign, rls_time, text)

部分截图如下:

数据成功获取!

实现翻页爬取

因为我们要获取的数据不止一页,所以咱们来接着分析翻页。就从每一页的url开始。

https://m.weibo.cn/comments/hotflow?id=4659897109841690&mid=4659897109841690&max_id_type=0

https://m.weibo.cn/comments/hotflow?id=4659897109841690&mid=4659897109841690&max_id=152459469424517&max_id_type=0

https://m.weibo.cn/comments/hotflow?id=4659897109841690&mid=4659897109841690&max_id=141326913106518&max_id_type=0

https://m.weibo.cn/comments/hotflow?id=4659897109841690&mid=4659897109841690&max_id=140364839614257&max_id_type=0

从第二页开始,每个连接的后面都多了一个叫做max_id的参数。

并且这个max_id是跟随页数随机变化的。

通过第一页的链接获取到了第二页的max_id,

然后通过第二页的链接获取到第三页max_id

以此类推,获取到全部数据......

for page in range(2,100+1):

url =f'https://m.weibo.cn/comments/hotflow?id=4659897109841690&mid=4659897109841690&max_id={max_id}&max_id_type={max_id_type}'

保存数据

最后将爬取下来的数据,使用openpyxl保存至Excel文件中

数据处理

这里我们使用熊猫来读取数据,并去除空行

使用jieba制作分词

rcv_data = pd.read_excel('奥运会避孕套.xlsx')

exist_col = rcv_data.dropna()# 删除空行

c_title = exist_col['发帖内容'].tolist()

# 观影评论词云图

wordlist = jieba.cut(''.join(c_title))

result =' '.join(wordlist)

pic ='img.jpg'

可视化

最后我们使用stylecloud来生成多样形式的词云

gen_stylecloud(text=result,

icon_name='fas fa-trash',

font_path='msyh.ttc',

background_color='white',

output_name=pic,

custom_stopwords=['你','我','的','了','在','吧','是','也','都','不','吗','就','人','去','不是','一个','就是','上',

'有','还','没','被','好','呢','啊','很做','这个','那个','很','这','发','更']

)

print('绘图成功!')

相关文章

网友评论

      本文标题:东京奥运会禁止握手,为何还要发15万只避孕套?Python爬虫告

      本文链接:https://www.haomeiwen.com/subject/xmjbvltx.html