python + selenium + PhantomJS 获取腾讯应用宝APP评论
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
代码样例:
#/usr/bin/env python
# -*- coding: utf-8 -*- from selenium import webdriver
import time
import xlsxwriter
import json def main(url): driver = webdriver.PhantomJS()
driver.get(url)
time.sleep(5) with open("./tencent_yyb.json", "wb") as write_obj:
try:
# numstr = driver.find_elements_by_xpath('//*[@id="J_CommentCount"]')[0].text
# num = int(numstr[1:4])
flag = True
while flag: # 循环,无法点击“查看更多评论”报错,重置标志位flag完成获取所有内容
try:
driver.find_element_by_id("J_DetCommentShowMoreBtn").click() # 点击“查看更多评论”
#driver.implicitly_wait(10)
time.sleep(1)
except Exception as err:
print err
flag = False data = driver.find_elements_by_xpath('//*[@id="J_DetDataContainer"]/div/div[8]/ul/li') repeat = {} # 缓存数据
for item in data:
val_list = item.text.split('\n')
if len(val_list) == 3:
ptime = val_list[1].encode("utf-8")
pcontent = val_list[2].encode("utf-8")
if ptime not in repeat.keys(): # 去重
repeat[ptime] = pcontent
write_obj.write("{\"发布时间\":\"" + ptime + "\", \"发布内容\":\"" + pcontent + "\"}\n" )
else:
ptime = val_list[1].encode("utf-8")
pcontent = ' '
if ptime not in repeat.keys():
repeat[ptime] = pcontent
write_obj.write("{\"发布时间\":\"" + ptime + "\", \"发布内容\":\"" + pcontent + "\"}\n" )
except Exception as err:
print err
finally:
driver.quit() def get_num(name):
jfilename = "./" + name + ".json"
count = len(open(jfilename, "rU").readlines()) - 1
return count # xls转换写入
def w_xls(url, name):
perfix = time.strftime('%Y%m%d')
xfilename = "./" + name + '_' + perfix + ".xlsx"
jfilename = "./" + name + ".json"
workbook = xlsxwriter.Workbook(xfilename)
worksheet1 = workbook.add_worksheet()
lines = int(get_num(name))
worksheet1.set_column = ('A:C', lines+1)
worksheet1.write('A1', 'URL')
worksheet1.write('B1', u'发布时间')
worksheet1.write('C1', u'发布内容') row = 1
with open(jfilename, "r") as obj_read:
for line in obj_read.readlines():
data = json.loads(line)
worksheet1.write(row, 0, url)
worksheet1.write(row, 1, data[u'发布时间'])
worksheet1.write(row, 2, data[u'发布内容'])
row += 1 if __name__ == '__main__': url = '' main(url)
time.sleep(3)
w_xls(url, "tencent_yyb")
python + selenium + PhantomJS 获取腾讯应用宝APP评论的更多相关文章
- Python+selenium之获取文本值和下拉框选择数据
Python+selenium之获取文本值和下拉框选择数据 一.结合实例进行描述 1. 实例如下所示: #新增标签操作 def func_labels(self): self.driver.find_ ...
- Python+Selenium自动化-获取页面信息
Python+Selenium自动化-获取页面信息 1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...
- python+selenium+PhantomJS爬取网页动态加载内容
一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览 ...
- python+selenium+PhantomJS批量投递智联简历(不要用自己的账号进行测试,请使用小号,很烦人的,哈哈哈)
1.环境python2.7+selenium+PhantomJS(软件安装和库的安装网上都有教程我们跳过,so easy) 2.原理 绕过首页登录需要验证码,直接进入搜索栏,输入搜索的职位+地区搜索出 ...
- python selenium+phantomjs alert()弹窗报错
问题:用selenium+phantomjs 模拟登陆,网页用JavaScript的alert("登陆成功")弹出框,但是用switch_to_alert().accept()报错 ...
- 看我怎么扒掉CSDN首页的底裤(python selenium+phantomjs爬取CSDN首页内容)
这里只是学习一下动态加载页面内容的抓取,并不适用于所有的页面. 使用到的工具就是python selenium和phantomjs,另外调试的时候还用了firefox的geckodriver.exe. ...
- python selenium+phantomJS自动化测试环境
0x00配置phantomJS 1. 在windows平台下 此种方法是弹浏览器进行自动化测试的. 1.下载谷歌的驱动 https://chromedriver.storage.googleapis. ...
- 基于Python, Selenium, Phantomjs无头浏览器访问页面
引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...
- Python+Tornado+Tampermonkey 获取某讯等主流视频网站的会员视频解析播放
近期,<哪吒之魔童降世>在各大视频软件可以看了,然而却是一贯的套路,非会员谢绝观看!!!只能从国内那些五花八门的视频网站上找着看了,或者通过之前本人说的 Chrome 的油猴插件,传送门 ...
随机推荐
- 22Mybatis_订单商品数据模型_多对多查询以及对多对多查询的总结
之前讲了一对一,一对多查询,这篇文章讲的是多对多. 先给出需求:查询用户及用户购买商品信息. 我们由之前的文章知道,这个需求是多对多的. 还是那个终止我们的mybatis所做的不管是之前的一对一还是一 ...
- JS 之匿名函数
匿名函数以及闭包 匿名函数就是没有名字的函数.闭包是指有权访问另一个函数作用域中的变量的函数.创建闭包的常见方式是在一个函数的内部创建另一个函数.闭包会携带包含它的函数的作用域,因此会比其他函数占用更 ...
- Android连接网络打印机,jSocket连接网络打印机
老大写的一个打印工具类,记录一下. package com.Ieasy.Tool; import android.annotation.SuppressLint; import java.io.IOE ...
- Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志
11.5 日志记录 可以通过Loger.getGlobal().info(xxxx);的方式来记录log. 11.5.2 高级日志 1)通过一个包名来 创建一个新的日志记录器. private sta ...
- SpringMVC实现上传和下载
摘要 有些下载的错误解决来 java.lang.IllegalStateException: getOutputStream() has already been called for this re ...
- 20145222黄亚奇《Java程序设计》第7周学习总结
教材学习内容总结 第十三章 时间与日期 即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Unix时间)时间. 秒的单位定义时基于TAI.也就是铯原子辐射的振动次数. Unix时间是1970年 ...
- 解决装系统选中的磁盘采用的是GPT分区形式
今天给服务器重装系统碰到的问题,记录一下 当时是按正常的操作:到了装系统选盘的时候是找不到盘符的,加载了raid驱动,然后顺利找到盘符,然后格式化了以前的C盘, 结果无法选中格式化后的C盘,无法下一步 ...
- css3动画 bug
1. .myanimate{ transition-property: left;transition-duration: .3s;transition-timing-function: ease } ...
- Android图片浏览器之缩略图
项目源码:http://files.cnblogs.com/files/tgyf/app.rar. 最近在自学Android,尝试实现一般手机上都存在的图片浏览器,从缩略图开始. 直接上图,这是goo ...
- css限制图片大小,避免页面撑爆
/*==========限制图片大小======避免页面撑暴========*/img { max-width:100%;width:expression(width>669?"100 ...