加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

用数据分析网络暴力有多可怕

发布时间:2019-04-02 03:50:00 所属栏目:教程 来源:小F
导读:这应该是一篇拖得蛮久的文章。 故事源于潘长江在某个综艺节目上没认出蔡徐坤,然后潘长江老师的微博评论区就炸锅了。 最后搞得两边都多多少少受到网络暴力的影响。 直至今日,这条微博的评论区还在更新着。 不得不说微博的黑粉,强行带节奏,真的很可怕。
副标题[/!--empirenews.page--]

这应该是一篇拖得蛮久的文章。

用数据分析网络暴力有多可怕

故事源于潘长江在某个综艺节目上没认出蔡徐坤,然后潘长江老师的微博评论区就炸锅了。

最后搞得两边都多多少少受到网络暴力的影响。

直至今日,这条微博的评论区还在更新着。

不得不说微博的黑粉,强行带节奏,真的很可怕。

还有比如自己一直关注的英雄联盟。

上周王校长也是被带了一波节奏,源于姿态退役后又复出的一条微博。

本来是一句很普通的调侃回复,「离辣个传奇adc的回归,还远吗?[二哈]」。

然后就有人开始带王校长的节奏,直接把王校长给惹毛了。

上面这些事情,对于我这个吃瓜群众,也没什么好说的。

只是希望以后能没有那么多无聊的人去带节奏,强行给他人带来压力。

本次通过获取潘长江老师那条微博的评论用户信息,来分析一波。

一共是获取了3天的评论,共14万条。

一、前期工作

微博评论信息获取就不细说,之前也讲过了。

这里提一下用户信息获取,同样从移动端下手。

主要是获取用户的昵称、性别、地区、微博数、关注数、粉丝数。

另外本次的数据存储采用MySQL数据库。

创建数据库。

  1. import pymysql 
  2.  
  3. db = pymysql.connect(host='127.0.0.1', user='root', password='774110919', port=3306) 
  4. cursor = db.cursor() 
  5. cursor.execute("CREATE DATABASE weibo DEFAULT CHARACTER SET utf8mb4") 
  6. db.close() 

创建表格以及设置字段信息。

  1. import pymysql 
  2.  
  3. db = pymysql.connect(host='127.0.0.1', user='root', password='774110919', port=3306, db='weibo') 
  4. cursor = db.cursor() 
  5. sql = 'CREATE TABLE IF NOT EXISTS comments (user_id VARCHAR(255) NOT NULL, user_message VARCHAR(255) NOT NULL, weibo_message VARCHAR(255) NOT NULL, comment VARCHAR(255) NOT NULL, praise VARCHAR(255) NOT NULL, date VARCHAR(255) NOT NULL, PRIMARY KEY (comment, date))' 
  6. cursor.execute(sql) 
  7. db.close() 

二、数据获取

具体代码如下。

  1. from copyheaders import headers_raw_to_dict 
  2. from bs4 import BeautifulSoup 
  3. import requests 
  4. import pymysql 
  5. import re 
  6.  
  7. headers = b""" 
  8. accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 
  9. accept-encoding:gzip, deflate, br 
  10. accept-language:zh-CN,zh;q=0.9 
  11. cache-control:max-age=0 
  12. cookie:你的参数 
  13. upgrade-insecure-requests:1 
  14. user-agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 
  15. """ 
  16.  
  17. # 将请求头字符串转化为字典 
  18. headers = headers_raw_to_dict(headers) 
  19.  
  20.  
  21. def to_mysql(data): 
  22.     """ 
  23.     信息写入mysql 
  24.     """ 
  25.     table = 'comments' 
  26.     keys = ', '.join(data.keys()) 
  27.     values = ', '.join(['%s'] * len(data)) 
  28.     db = pymysql.connect(host='localhost', user='root', password='774110919', port=3306, db='weibo') 
  29.     cursor = db.cursor() 
  30.     sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values) 
  31.     try: 
  32.         if cursor.execute(sql, tuple(data.values())): 
  33.             print("Successful") 
  34.             db.commit() 
  35.     except: 
  36.         print('Failed') 
  37.         db.rollback() 
  38.     db.close() 
  39.  
  40.  
  41. def get_user(user_id): 
  42.     """ 
  43.     获取用户信息 
  44.     """ 
  45.     try: 
  46.         url_user = 'https://weibo.cn' + str(user_id) 
  47.         response_user = requests.get(url=url_user, headers=headers) 
  48.         soup_user = BeautifulSoup(response_user.text, 'html.parser') 
  49.         # 用户信息 
  50.         re_1 = soup_user.find_all(class_='ut') 
  51.         user_message = re_1[0].find(class_='ctt').get_text() 
  52.         # 微博信息 
  53.         re_2 = soup_user.find_all(class_='tip2') 
  54.         weibo_message = re_2[0].get_text() 
  55.         return (user_message, weibo_message) 
  56.     except: 
  57.         return ('未知', '未知') 
  58.  
  59.  
  60. def get_message(): 
  61.     # 第一页有热门评论,拿取信息较麻烦,这里偷个懒~ 
  62.     for i in range(2, 20000): 
  63.         data = {} 
  64.         print('第------------' + str(i) + '------------页') 
  65.         # 请求网址 
  66.         url = 'https://weibo.cn/comment/Hl2O21Xw1?uid=1732460543&rl=0&page=' + str(i) 
  67.         response = requests.get(url=url, headers=headers) 
  68.         html = response.text 
  69.         soup = BeautifulSoup(html, 'html.parser') 
  70.         # 评论信息 
  71.         comments = soup.find_all(class_='ctt') 
  72.         # 点赞数 
  73.         praises = soup.find_all(class_='cc') 
  74.         # 评论时间 
  75.         date = soup.find_all(class_='ct') 
  76.         # 获取用户名 
  77.         name = re.findall('id="C_.*?href="/.*?">(.*?)</a>', html) 
  78.         # 获取用户ID 
  79.         user_ids = re.findall('id="C_.*?href="(.*?)">(.*?)</a>', html) 
  80.  
  81.         for j in range(len(name)): 
  82.             # 用户ID 
  83.             user_id = user_ids[j][0] 
  84.             (user_message, weibo_message) = get_user(user_id) 
  85.             data['user_id'] = " ".join(user_id.split()) 
  86.             data['user_message'] = " ".join(user_message.split()) 
  87.             data['weibo_message'] = " ".join(weibo_message.split()) 
  88.             data['comment'] = " ".join(comments[j].get_text().split()) 
  89.             data['praise'] = " ".join(praises[j * 2].get_text().split()) 
  90.             data['date'] = " ".join(date[j].get_text().split()) 
  91.             print(data) 
  92.             # 写入数据库中 
  93.             to_mysql(data) 
  94.  
  95.  
  96. if __name__ == '__main__': 
  97.     get_message() 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读