看了网友用Python通过影评来分析电影是好片还是烂片,自己也有了个想法想去分析下百度贴吧的帖子是精品帖子还是水帖子。目前正在熟悉工具的使用。
会用到的库:Selenium, pandas(数据模型),jieba(分词器),snownlp(情感分析),worldcloud(生成词云)
pip install —U selenium
pip install pandas //pandas一般与numpy库一起安装
Firefox浏览器需安装geckdriver.exe
Chrome浏览器需要安装chromedriver.exe
IE浏览器要安装IEdriver.exe
可以到官网下载浏览器驱动:http://www.seleniumhq.org/download/
均放在python27的scripts目录下
这里使用的Firefox浏览器自带的元素查找器
这样就可以比较简便的获取所需要用到页面的元素
(1)访问页面
#_*_coding: utf-8_*_
from selenium import webdriver
browser=webdriver,Firefox() #声明浏览器对象
browser.get("www.baidu.com")
print(browser.page_source) #获取页面渲染后的源代码
browser.close
(2)元素选取
单个:
多个:
(3)元素交互
输入文本
browser.find_elements_by_id("kw").send_key("selenium") //在百度搜索框输入内容
由于输入的值会保存,当你向下一个输入框输入时,所输入的文本是在原有的基础上继续输入,可以用以下指令来清除原有的内容:browser.find_elements_by_id("su").clear()
模拟点击
browser.find_elements_by_id("su").click() //点击百度的搜索按钮
获取元素文本值
网页源码可怕,后味无穷。主要是暗网对大众来说太恐怖了,难以想象背后的黑暗。
browser.find_elements_by_class_name("short").text //获取豆瓣短评文本
获取元素的属性(在一组元素中很有用)
网页源码 2018-09-11
browser.find_elements_by_class_name(" comment-time").get_attribute('title') //获取豆瓣短评时间
5.panda:DataFrame的使用
(1)创建DataFrame对象
import pandas as pd
import numpy as np
df=pd.DataFrame(['a','b','c','d','e'],columns=['cols'],index=[1,2,3,4,5]) //创建DataFrame需要“数据”,“列”,“标志”三个基本的属性
print df
运行结果:
cols
1 a
2 b
3 c
4 d
5 e
(2)对数据进行应用
获取:df['cols'],在方括号中输入这个单一的列名,来获得一个Series,该操作相当于df.cols
注:使用IPython,tab键可以自动激活可选列名(包括其它的属性)
应用函数:df.apply()
>>>通常都会使用到lambda函数:例如:func=lambda x:x+1 等同于 def func(x):return(x+1)
df = pd.DataFrame(np.array([['a','b','c','d','e'],[1,2,3,4,5]]).T, columns=['cols','cols2'])
print df
print(df.apply(lambda x:x.max()))
运行结果:
cols cols2
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
cols e
cols2 5
dtype: object
6.小测试,获取豆瓣短评
#-*-coding:utf-8-*- import pandas as pd import numpy as np import time from selenium import webdriver def getComment(url): browser=webdriver.Firefox() i=1 AllArticle = pd.DataFrame() browser.get(url) while True: s = browser.find_elements_by_class_name('comment-item') articles = pd.DataFrame(s,columns=['web']) articles['user'] = articles.web.apply(lambda x:x.find_element_by_tag_name('a').get_attribute('title')) articles['comment'] = articles.web.apply(lambda x:x.find_element_by_class_name('short').text) articles['star'] = articles.web.apply(lambda x:x.find_element_by_xpath("//*[@id='comments']/div[1]/div[2]/h3/span[2]/span[2]").get_attribute('title')) articles['date'] = articles.web.apply(lambda x:x.find_element_by_class_name('comment-time').get_attribute('title')) articles['vote'] = articles.web.apply(lambda x:np.int(x.find_element_by_class_name('votes').text)) del articles['web'] AllArticle=pd.concat([AllArticle,articles],axis=0) print('第'+str(i)+'页完成!') try: if i==1: browser.find_element_by_xpath("//*[@id='paginator']/a").click() else: browser.find_element_by_xpath("//*[@id='paginator']/a[3]").click() browser.implicitly_wait(10) time.sleep(3) i=i+1 except: AllArticle=AllArticle.reset_index(drop=True) return AllArticle if i==2: AllArticle=AllArticle.reset_index(drop=True) browser.close() return AllArticle AllArticle=AllArticle.reset_index(drop=True) return AllArticle if __name__ == '__main__': url='https://movie.douban.com/subject/26725678/comments?sort=new_score&status=P' pd.set_option('display.width',200) #显示宽度 pd.set_option('display.max_colwidth',30) #每列宽度 pd.set_option('display.max_columns',10) #设置显示的列数 pd.set_option('display.colheader_justify','right') #对齐方式,默认居中 print(getComment(url))
运行结果:
user comment star date vote
0 凌睿 1.陈冠希:这有什么恐怖的,这不就是我的亲身经历吗?... 推荐 2018-09-11 10:11:28 1220
1 倪克斯 可怕,后味无穷。主要是暗网对大众来说太恐怖了,难以想... 推荐 2018-07-21 12:22:17 909
2 桃桃淘电影 看完之后,马上删除,并清空回收站。要不电脑里放这么个... 推荐 2018-09-14 00:08:32 761
3 芦哲峰 还是那句话:互联网改变世界,同样也改变了电影,不仅是... 推荐 2018-09-09 13:05:25 535
4 降半音耳朵 本来只是随便看看,没想到意外地好看!可以说是「新时代... 推荐 2018-07-21 12:26:30 288
5 王大根 苹果公司过来看看,1T闪存的MacBook Pro ... 推荐 2018-09-17 21:52:42 255
6 l6632154j 不要隨便拿走不屬於自己得東西..... 推荐 2018-07-29 09:59:48 259
7 蜡笔 吓到我了。期间网盘还中断了两三次,以为黑到我的手机里... 推荐 2018-09-10 23:34:37 262
8 水仙操 搜资源的时候好担心点开是真·暗网视频 虐杀订制 人肉... 推荐 2018-09-04 20:46:42 197
9 高仿外壳 惊心动魄,屏幕的背面是深不见底的人性暗河。极度恐慌,... 推荐 2018-09-12 23:06:53 221
10 谢谢你们的鱼 后半部分一直在喊卧槽,不光光是吓人这么简单,好几处真... 推荐 2018-09-11 00:58:45 157
11 戚阿九 比特币真的很值钱,几年前为什么不买点!(重点误) 推荐 2018-09-11 16:48:18 124
12 杨三疯 想象下在天朝用微信、微博、百度、朋友圈、抖音、迅雷、... 推荐 2018-09-11 14:03:32 91
13 逢澶Ty 没看过前作,所以再烂也没比较点…但是这部出乎意料我觉... 推荐 2018-07-29 14:00:24 81
14 亵渎电影 竟然爽到了,暗网大神们连鬼畜混剪都能玩出新花样,想到... 推荐 2018-09-12 21:15:02 69
15 方枪枪 创意牛逼,一黑到底,螳螂捕蝉黄雀在后。感慨:别太好奇... 推荐 2018-09-11 11:34:30 83
16 田间箫鼓赛闲神 新的电影拍摄手法和审美正在逐步诞生、成型。 推荐 2018-09-11 12:55:31 68
17 透明 在线视频直播聊天,美女帅哥免费陪聊! 推荐 2018-09-12 00:13:04 59
18 glim 不怕,互联网法院比他们狠多了 推荐 2018-09-11 22:39:48 54
19 agangisboy 真特么扯淡,坏人出现还自带马赛克。真是有多无知,就会... 推荐 2018-09-15 19:39:10 43