12星座都是什么性格,大数据告诉你!

下面是利用python爬取12星座性格相关的微博,产生的12星座性格特征词云!白羊座为例,其他的在最后。

上代码(以白羊座为例):

1.微博数据爬取(需要selenium,Firefox的驱动geckodriver)

# coding=utf-8import time
import datetime
import re
import os
import sys
import codecs
import shutil
import urllib
import random
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.action_chains import ActionChains
import xlwt#先调用Firefox
driver = webdriver.Firefox()#第一步: 登陆login.sina.com
def LoginWeibo(username, password):try:#输入用户名/密码登录print(u'准备登陆Weibo.cn网站...')driver.get("https://login.sina.com.cn/signup/signin.php")elem_user = driver.find_element_by_name("username")elem_user.send_keys(username) #用户名elem_pwd = driver.find_element_by_name("password")elem_pwd.send_keys(password)  #密码elem_sub = driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div[2]/form/div[2]/div/ul/li[7]/div[1]")elem_sub.click()              #点击登陆 因无name属性try:#输入验证码time.sleep(10)elem_sub.click() except:#不用输入验证码passprint('Crawl in ', driver.current_url)print(u'输出Cookie键值对信息:')'''for cookie in driver.get_cookies(): print(cookie)for key in cookie:print(key, cookie[key])'''print(u'登陆成功...')except Exception as e:      print("Error: ",e)finally:    print(u'End LoginWeibo!\n')#第二步: 访问http://s.weibo.com/页面搜索结果
def GetSearchContent(key):driver.get("http://s.weibo.com/")print('搜索热点主题:', key)#输入关键词并点击搜索item_inp = driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[2]/div[1]/div/div/div[2]/div/input")item_inp.send_keys(key)item_inp.send_keys(Keys.RETURN)    #采用点击回车直接搜索time.sleep(3)current_url = driver.current_urlcurrent_url = current_url.split('&')[0] global start_stampglobal page#需要抓取的开始和结束日期start_date = datetime.datetime(2017,12,20,0)end_date = datetime.datetime(2017,12,24,0)delta_date = datetime.timedelta(days=1)#每次抓取一天的数据start_stamp = start_dateend_stamp = start_date + delta_dateglobal outfileglobal sheetoutfile = xlwt.Workbook(encoding = 'utf-8')while end_stamp <= end_date:page = 1sheet = outfile.add_sheet(str(start_stamp.strftime("%Y-%m-%d-%H")))url = current_url + '&typeall=1&suball=1×cope=custom:' + str(start_stamp.strftime("%Y-%m-%d-%H")) + ':' + str(end_stamp.strftime("%Y-%m-%d-%H")) + '&Refer=g'print(url)driver.get(url)handlePage()start_stamp = end_stampend_stamp = end_stamp + delta_datetime.sleep(1 + float(random.randint(1, 100)) / 10)#页面加载完成后,对页面内容进行处理
def handlePage():while True:time.sleep(1 + float(random.randint(1, 100)) / 20)#先行判定是否有内容if checkContent():print("getContent")getContent()#先行判定是否有下一页按钮if checkNext():#拿到下一页按钮next_page_btn = driver.find_element_by_xpath("//a[@class='page next S_txt1 S_line1']")next_page_btn.click()else:print("no Next")breakelse:print("no Content")break#判断页面加载完成后是否有内容
def checkContent():try:driver.find_element_by_xpath("//div[@class='pl_noresult']")flag = Falseexcept:flag = Truereturn flag#判断是否有下一页按钮
def checkNext():try:driver.find_element_by_xpath("//a[@class='page next S_txt1 S_line1']")flag = Trueexcept:flag = Falsereturn flag#在页面有内容的前提下,获取内容
def getContent():nodes = driver.find_elements_by_xpath("//div[@class='WB_cardwrap S_bg2 clearfix']")print(nodes)#在运行过程中微博反爬机制,需要输入验证码if len(nodes) == 0:input("请在微博页面输入验证码!")url = driver.current_urldriver.get(url)getContent()returndic = {}global pageprint(str(start_stamp.strftime("%Y-%m-%d-%H")))print(u'页数:', page)page = page + 1print(u'微博数量', len(nodes))for i in range(len(nodes)):dic[i] = []non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)try:WBNR = nodes[i].find_element_by_xpath(".//div[@class='feed_content wbcon']/p[@class='comment_txt']").text.encode('utf-8')WBNR = WBNR.decode().translate(non_bmp_map)except:WBNR = ''dic[i].append(WBNR)#保存文本with open("BY.txt", 'a', encoding='utf-8') as f:for k in dic:for i in range(len(dic[k])):f.writelines((dic[k][i],'\n'))  time.sleep(1 + float(random.randint(1, 100)) / 20)if __name__ == '__main__':username = ''             #输入你的用户名password = ''               #输入你的密码LoginWeibo(username, password)       #登陆微博key = '白羊性格' GetSearchContent(key)

2.jieba分词,生成词云

import pickle
from os import path
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
def make_worldcloud(file_path):text_from_file_with_apath = open(file_path,'r',encoding='UTF-8').read()wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=False)wl_space_split = " ".join(wordlist_after_jieba)print(wl_space_split)backgroud_Image = plt.imread('BY.jpg')print('加载图片成功!')'''设置词云样式'''stopwords = STOPWORDS.copy()print(type(stopwords))stopwords.add("哈哈")#可以加多个屏蔽词stopwords.add("金牛")stopwords.add("金牛座")stopwords.add("双子")stopwords.add("双子座")stopwords.add("巨蟹")stopwords.add("巨蟹座")stopwords.add("狮子")stopwords.add("狮子座")stopwords.add("处女")stopwords.add("处女座")stopwords.add("天秤")stopwords.add("天秤座")stopwords.add("天蝎")stopwords.add("天蝎座")stopwords.add("射手")stopwords.add("射手座")stopwords.add("摩羯")stopwords.add("摩羯座")stopwords.add("魔蝎座")stopwords.add("水瓶")stopwords.add("水瓶座")stopwords.add("双鱼")stopwords.add("双鱼座")wc = WordCloud(width=1024,height=768,background_color='white',# 设置背景颜色mask=backgroud_Image,# 设置背景图片font_path='font/simsun.ttc',  # 设置中文字体,若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字max_words=300, # 设置最大现实的字数stopwords=stopwords,# 设置停用词max_font_size=400,# 设置字体最大值random_state=50,# 设置有多少种随机生成状态,即有多少种配色方案)wc.generate_from_text(wl_space_split)#开始加载文本img_colors = ImageColorGenerator(backgroud_Image)wc.recolor(color_func=img_colors)#字体颜色为背景图片的颜色plt.imshow(wc)# 显示词云图plt.axis('off')# 是否显示x轴、y轴下标plt.show()#显示# 获得模块所在的路径的d = path.dirname(__file__)# os.path.join():  将多个路径组合后返回wc.to_file(path.join(d, "BY_cloud.jpg"))print('生成词云成功!')make_worldcloud('BY.txt')

突发奇想做的,数据采集处理都很粗糙,想要真正通过大数据去汇总微博上关于各星座的性格描述,还需要更进很多步,不过这个用来娱乐挺有意思的。

本来还想把各个星座出现频率最高的汇总起来形成星座共性,嗯...懒...我是射手座哈哈,如果有兴趣可以联系我,目前初步的12星座性格词云已经在朋友圈发过了哈哈,有什么问题随时沟通。

把别的也上传一下吧~

参考资料:

http://blog.csdn.net/destinyuan/article/details/51297528

https://zhuanlan.zhihu.com/p/30107203

12星座都是什么性格?(python爬虫+jieba分词+词云)相关推荐

  1. 钱钟书《围城》 使用 Python wordcloud jieba 生成词云分析图

    文章目录 Intro Requirements 分析结果(4张图) 代码 Intro 这几天看了钱钟书老先生的<围城>,读过之后有种感觉:如果对全文分词,按照出现频率从高到低应该是: 小姐 ...

  2. python爬虫——jieba

    python爬虫--jieba 三种分词模式: 精确模式:试图将句子精确分开 jieba.cut('字符串') 全模式:将句子中所有可能成词的词语都扫描出来 jieba.cut(字符串, cut_al ...

  3. 【Python爬虫】爬取云班课资源,活动

    CSDN不让放(因为真的很好用哈哈哈),这里放博客园链接: [Python爬虫]爬取云班课资源,活动

  4. 自然语言处理系列十七》中文分词》分词工具实战》Python的Jieba分词

    注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书<分布式机器学习实战>(人工智能科学与技术丛书)[陈敬雷编著][清华大学出版社] 文章目录 自然语言处理系列十七 分词工 ...

  5. 利用python做微信聊天记录词云分析——记录美好回忆

    目录 1 概述 2 数据准备 2.1 安卓设备 2.1.1 Root手机,安装Root Explorer 2.1.2 用Root Explorer将聊天记录的数据文件导出并存入电脑 2.1.3 对En ...

  6. python怎样安装词云_在python中怎样安装词云-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 腾讯qq 云 词典正式发布无需下 ...

  7. python词频统计 生成词云

    博客简介 本篇博客介绍2个第三方库,中文分词库jieba和词云库WordCloud,我们将完成三个例子: 统计英文词汇频率 统计中文文本词汇频率使用jieba库 生成词云 在正式开始之前,我们先安装两 ...

  8. python学习笔记---中文词云

    python学习笔记–中文词云 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 发现词云的展示还挺有意思的,比较多的应用场景是给用户打标签,社交软件应用较多.今天随便找了一些文字电影 ...

  9. 平安喜乐 | Python制作圣诞树和词云

    一.前言 圣诞节庆祝和送礼物貌似现在已经成为全球流行的习惯~ 本文利用 Python 制作圣诞树和词云,教会你多种方法,代码直接运行即可,学会拿去送给你想要祝福的人吧~~ 二.Python画圣诞树 1 ...

最新文章

  1. Android之用HttpURLConnection断点下载谷歌云存储(google cloud storage)文件
  2. view [bootstrap-4] not found如何解决_Dubbo如何处理业务异常,这个一定要知道哦
  3. 在Python中最快的HTTP GET方法是什么?
  4. 想做Bezier动画,可惜弄出来这个差远了。
  5. 1602显示字符串的C语言程序,LCD1602程序显示字符串
  6. web服务之源码编译安装LAMP
  7. PDF文件页面大小不一致的解决办法
  8. 向Docker告别的时候到了
  9. 彩色星球科技旗下娱乐元宇宙产品“彩色世界”正式上线;GIGABYTE推出新一代AORUS专业电竞笔电 | 全球TMT...
  10. 《PaddlePaddle从入门到炼丹》十一——自定义图像数据集识别
  11. Scratch3.0创意编程(基础篇):第4课 算数小达人
  12. 数分笔记整理25 - 数据处理项目 - 中国城市资本流动问题探索
  13. 天文学家发现“超级地球”
  14. macM1安装tensorflow和torch教程(python3.8环境)
  15. 潘多拉盒子 使用 hd-idle 硬盘休眠设置
  16. 计算机会取代老师吗英语作文,未来老师会被计算机所取代吗英语作文
  17. 三种常见mq的优缺点比较
  18. 黑莓8830 完美使用联通卡(转)
  19. 图片分类-python
  20. html盲人阅读器,全球盲人数量调查报告.docx

热门文章

  1. AD603 级联放大 可变增益放大器 压控增益放大器 VCA模块 原理图PCB
  2. Kaggle入门项目,泰坦尼克号幸存者
  3. WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!的分析
  4. Xiaocao's first blog post
  5. 如何理解相关性系数(pearson、spearman、kendall)
  6. 2015北邮计算机考研复试上机题解
  7. 东方财富:公司总经理陶涛辞任 其实将担任总经理职务
  8. 软考数据库考试有题库吗_网络工程师真的像大家说的那么容易考吗?
  9. 机器学习系列4 使用Python创建Scikit-Learn回归模型
  10. 盘点2016年人工智能与深度学习领域的十大收购