python + selenium + PhantomJS 获取腾讯应用宝APP评论

2017 年 8 月 29 日 数据挖掘入门与实战 要学习更多点这→



大数据挖掘DT数据分析  公众号: datadw


PhantomJS

PhantomJS 是一个基于WebKit的服务器端JavaScript API,它无需浏览器的支持即可实现对Web的支持,且原生支持各种Web标准,如DOM 处理、JavaScript、CSS选择器、JSON、Canvas和可缩放矢量图形SVG。PhantomJS主要是通过JavaScript和 CoffeeScript控制WebKit的CSS选择器、可缩放矢量图形SVG和HTTP网络等各个模块。PhantomJS主要支持Windows、 Mac OS、Linux三个平台,并且提供了对应的二进制安装包。

PhantomJS 的使用场景如下:

  • 无需浏览器的Web测试:无需浏览器的情况下进行快速的Web测试,且支持很多测试框架,如YUI Test、Jasmine、WebDriver、Capybara、QUnit、Mocha等。

  • 页面自动化操作:使用标准的DOM API或一些JavaScript框架(如jQuery)访问和操作Web页面。

  • 屏幕捕获:以编程方式抓起CSS、SVG和Canvas等页面内容,即可实现网络爬虫应用。构建服务端Web图形应用,如截图服务、矢量光栅图应用。

  • 网络监控:自动进行网络性能监控、跟踪页面加载情况以及将相关监控的信息以标准的HAR格式导出。

PhantomJS 已形成了一个功能非常强大的生态圈内容,相关项目如下:

  • CasperJS:一个开源的导航脚本处理和高级测试工具

  • Poltergeist :测试工具Capybara的测试驱动

  • Guard::Jasmine:能够基于Rails实现自动化测试Jasmine的Specs

  • GhostDriver:远程 WebDriver 有线协议的开源实现

  • PhantomRobot:PhantomJS机器人测试框架

  • Mocha-PhantomJS:JavaScript测试框架Mocha的客户端

此 外,生态圈还包括基于PhantomJS实现了众多截屏工具,如capturejs、pageres、phantomjs-screenshots、 manet、screenshot-app等;以及Node.js、Django、PHP、Sinatra等语言的截图API和Confess、 GhostStory、Grover等众多工具。

 

下载地址:

http://phantomjs.org/download.html

代码样例:

 1 #/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 from selenium import webdriver
 5 import time
 6 import xlsxwriter
 7 import json
 8 
 9 def main(url):
10 
11     driver = webdriver.PhantomJS()
12     driver.get(url)
13     time.sleep(5)
14 
15     with open("./tencent_yyb.json", "wb") as write_obj:
16         try:
17             # numstr = driver.find_elements_by_xpath('//*[@id="J_CommentCount"]')[0].text
18             # num = int(numstr[1:4])
19             flag = True
20             while flag:  # 循环,无法点击“查看更多评论”报错,重置标志位flag完成获取所有内容
21                 try:
22                     driver.find_element_by_id("J_DetCommentShowMoreBtn").click()  # 点击“查看更多评论”
23                     #driver.implicitly_wait(10)
24                     time.sleep(1)
25                 except Exception as err:
26                     print err
27                     flag = False
28 
29             data = driver.find_elements_by_xpath('//*[@id="J_DetDataContainer"]/div/div[8]/ul/li')
30 
31             repeat = {}  # 缓存数据
32             for item in data:
33                 val_list = item.text.split('\n')
34                 if len(val_list) == 3:
35                     ptime = val_list[1].encode("utf-8")
36                     pcontent = val_list[2].encode("utf-8")
37                     if ptime not in repeat.keys():  # 去重
38                         repeat[ptime] = pcontent
39                         write_obj.write("{\"发布时间\":\"" + ptime + "\", \"发布内容\":\"" + pcontent + "\"}\n" )
40                 else:
41                     ptime = val_list[1].encode("utf-8")
42                     pcontent = ' '
43                     if ptime not in repeat.keys():
44                         repeat[ptime] = pcontent
45                         write_obj.write("{\"发布时间\":\"" + ptime + "\", \"发布内容\":\"" + pcontent + "\"}\n" )
46         except Exception as err:
47             print err
48         finally:
49             driver.quit()
50 
51 def get_num(name):
52     jfilename = "./" + name + ".json"
53     count = len(open(jfilename, "rU").readlines()) - 1
54     return count
55 
56 # xls转换写入
57 def w_xls(url, name):
58     perfix = time.strftime('%Y%m%d')
59     xfilename = "./" + name + '_' + perfix + ".xlsx"
60     jfilename = "./" + name + ".json"
61     workbook = xlsxwriter.Workbook(xfilename)
62     worksheet1 = workbook.add_worksheet()
63     lines = int(get_num(name))
64     worksheet1.set_column = ('A:C', lines+1)
65     worksheet1.write('A1', 'URL')
66     worksheet1.write('B1', u'发布时间')
67     worksheet1.write('C1', u'发布内容')
68 
69     row = 1
70     with open(jfilename, "r") as obj_read:
71         for line in obj_read.readlines():
72             data = json.loads(line)
73             worksheet1.write(row, 0, url)
74             worksheet1.write(row, 1, data[u'发布时间'])
75             worksheet1.write(row, 2, data[u'发布内容'])
76             row += 1
77 
78 
79 if __name__ == '__main__':
80 
81     url = ''
82 
83     main(url)
84     time.sleep(3)
85     w_xls(url, "tencent_yyb")

人工智能大数据与深度学习

搜索添加微信公众号:weic2c


长按图片,识别二维码,点关注



大数据挖掘DT数据分析

搜索添加微信公众号:datadw


教你机器学习,教你数据挖掘


长按图片,识别二维码,点关注


登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
近期必读的7篇 CVPR 2019【视觉问答】相关论文和代码
专知会员服务
35+阅读 · 2020年1月10日
近期必读的5篇 CVPR 2019【图卷积网络】相关论文和代码
专知会员服务
32+阅读 · 2020年1月10日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
吐血整理!140种Python标准库、第三方库和外部工具都有了
炼数成金订阅号
14+阅读 · 2019年7月30日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
比Selenium快100倍的方法爬东方财富网财务报表
程序人生
8+阅读 · 2018年10月31日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
【宁波站】网络爬虫与文本挖掘
数萃大数据
5+阅读 · 2017年7月19日
Arxiv
5+阅读 · 2019年10月11日
Real-time Scalable Dense Surfel Mapping
Arxiv
5+阅读 · 2019年9月10日
Arxiv
26+阅读 · 2019年3月5日
Arxiv
5+阅读 · 2018年12月18日
Neural Arithmetic Logic Units
Arxiv
5+阅读 · 2018年8月1日
Arxiv
6+阅读 · 2018年2月7日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
近期必读的7篇 CVPR 2019【视觉问答】相关论文和代码
专知会员服务
35+阅读 · 2020年1月10日
近期必读的5篇 CVPR 2019【图卷积网络】相关论文和代码
专知会员服务
32+阅读 · 2020年1月10日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
相关资讯
吐血整理!140种Python标准库、第三方库和外部工具都有了
炼数成金订阅号
14+阅读 · 2019年7月30日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
比Selenium快100倍的方法爬东方财富网财务报表
程序人生
8+阅读 · 2018年10月31日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
【宁波站】网络爬虫与文本挖掘
数萃大数据
5+阅读 · 2017年7月19日
Top
微信扫码咨询专知VIP会员