python爬取微博数据词云_爬虫篇:使用Python动态爬取某大V微博,再用词云分析...

这是我用大V冯大辉老师最近5000多条微博内容做的词云,大家可以围观一下。

之前也写了一篇用python 来爬取朋友的QQ说说,大家也可以围观一下

好了,开始进入正题:#coding:utf-8

"""

爬取冯大辉老师的微博

代码都在github上:https://github.com/pythonchannel

"""

import time

from selenium import webdriver

from lxml import etree

import word_cloud_py as wcp

import sys

reload(sys)

#这里需要指定字符编码

sys.setdefaultencoding( "utf-8" )

def get_content(f_name):

#你的微博帐号

username = 'xxxx'

psd = 'xxxx'

#获取浏览器驱动

driver = webdriver.Firefox()

# 浏览器窗口最大化

driver.maximize_window()

driver.get('http://weibo.com/login.php')

print('login............................')

#给登录框与密码赋值

driver.find_element_by_id('loginname').send_keys(username)

driver.find_element_by_class_name('password').find_element_by_name('password').send_keys(psd)

#点击登录按钮

driver.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a/span').click()

# 这里因为登录,需要有一个延时,不能直接切换到新网页去

time.sleep(3)

# 登录成功后,再用浏览器地址定向到大辉老师的微博列表页,没有什么技巧,自己去找的

driver.get("https://weibo.com/p/1005051577826897/home?from=page_100505_profile&wvr=6&mod=data&is_all=1#place")

while True:

# 下拉滚动条,从1开始到3结束 分2次加载完每页数据

for i in range(1,6):

height = 20000*i#每次滑动20000像素

strWord = "window.scrollBy(0,"+str(height)+")"

driver.execute_script(strWord)

time.sleep(4)

selector = etree.HTML(driver.page_source)

divs = selector.xpath('//*[@id="Pl_Official_MyProfileFeed__22"]/div/div/div[1]/div[4]')

# mode =a 不清空连续写入

with open('{}.txt'.format(f_name),'a') as f:

for div in divs:

wb_content = div.xpath('./div[3]/text()')

wb_time = div.xpath('./div[2]/a/text()')

wb_content = wb_content[0] if len(wb_content) > 0 else ''

wb_time = wb_time[0] if len(wb_time) > 0 else ''

wb_content = wb_content.strip() # 去掉左右两边的空格

wb_time = wb_time.strip()

print wb_content, wb_time

f.write(wb_content+'\n')

#分析得知当为最后一页时,最后的page next S_txt1 S_line1不见了

if driver.page_source.find('page next S_txt1 S_line1') == -1:

print '没有下一页了'

break

# 找到“下一页”的按钮元素,原本想用xpath与classname,都失败了

# 这里我是用css来定位的,page next S_txt1 S_line1 在空格之间加'.' 来连接

submit = driver.find_element_by_css_selector('.page.next.S_txt1.S_line1')

submit.click()

if __name__ == '__main__':

f_name = 'ddddd'

get_content(f_name)

wcp.create_word_cloud(f_name)

特别注意一下,生成词云的代码在github上word_cloud_py文件中,调用方法就行了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值