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

用数据说明收集暴力有多可骇

发布时间:2019-04-02 10:04:26 所属栏目:教程 来源:小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() 

(编辑:湖南网)

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

热点阅读