(python解析js)selenium结合phantomjs抓取js生成的页面
来源:互联网 发布:js中有哪些事件 编辑:程序博客网 时间:2024/04/27 21:37
,有些网页是在加载时动态创建HTML内容,只要在js代码完全执行完后才会显示最终结果。如果用传统的方法抓取页面,就只能获得js代码执行之前页面上的内容。
要解决这个问题有两种方法:
1.直接从js代码中抓取数据(执行js代码,解析js变量)。 2.用第三方库运行js,抓取运行后的最终html页面。
在python中使用selenium执行js
selenium是一个强大的网络数据采集工具,其最初是为网站自动化测试而开发的。selenium可以让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或判断网站上某些动作是否发生。
selenium自己不带浏览器,它需要与第三方浏览器结合一起使用。这里使用phantomjs的工具代替真实的浏览器。
PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于 页面自动化 , 网络监测 , 网页截屏 ,以及 无界面测试 等。
把selenium和phantomjs结合在一起,就可以运行一个非常强大的爬虫了,可以处理cookie,js,header,以及任何需要你做的事。
安装:
selenium有python库,可以用pip等安装;phantomjs是一个功能完善的“无头“浏览器,并非一个python库,所以它不需要想python的其他库一样安装,也不能用pip安装。
sudo pip install seleniumhttp://npm.taobao.org/dist/phantomjs/ #下载安装包(sudo apt-get install phantomjs安装的不是最新的,发现不能用)phantomjs-2.1.1-linux-i686.tar.bz2tar -jxvf phantomjs-2.1.1-linux-i686.tar.bz2
使用:
from selenium import webdriverdriver = webdriver.PhantomJS(executable_path='/opt/phantomjs-2.1.1-linux-i686/bin/phantomjs')#executable_path为你的phantomjs可执行文件路径driver.get("http://news.sohu.com/scroll/")#或得js变量的值r = driver.execute_script("return newsJason")print r#selenium在webdriver的DOM中使用选择器来查找元素,名字直接了当,by对象可使用的选择策略有:id,class_name,css_selector,link_text,name,tag_name,tag_name,xpath等等print driver.find_element_by_tag_name("div").textprint driver.find_element_by_csss_selector("#content").textprint driver.find_element_by_id("content").text
0 0
- (python解析js)selenium结合phantomjs抓取js生成的页面
- (python解析js)scrapy结合ghost抓取js生成的页面,以及js变量的解析
- 利用phantomjs抓取js生成的页面
- 利用phantomjs+selenium抓取fund.eastmoney.com/fund.html网站第二页js生成的页面
- python selenium,PhantomJS运用 抓取滚动条滚动加载的页面, js动作操作,模拟登陆
- 使用phantomjs抓取JS动态生成的页面
- 使用phantomjs抓取JS动态生成的页面
- Python使用Selenium和PhantomJS解析动态JS的网页
- Python使用Selenium和PhantomJS解析动态JS的网页
- python抓取js加载的数据(phantomjs)
- php结合phantomjs实现网页截屏、抓取js渲染的页面
- 使用selenium抓取JS动态生成的页面
- scrapy结合webkit抓取js生成的页面
- scrapy结合webkit抓取js生成的页面
- scrapy结合webkit抓取js生成的页面
- Python爬虫用Selenium抓取js生成的文件(一)
- 使用Selenium和PhantomJS解析带JS的网页
- 使用Selenium和PhantomJS解析带JS的网页
- Tomcat连接器运行过程(源码阅读)
- matlab 信号与系统(一)—— 上采样(Upsampling)和下采样(Downsampling)
- 【LeetCode】Remove Duplicates from Sorted List 解题报告
- MySql中InnoDB引擎索引
- struts2实现管理员和普通用户登陆时分别跳转到不同页面
- (python解析js)selenium结合phantomjs抓取js生成的页面
- hdoj1114
- 访问第三方服务
- JAVA数组排序——二分(折半)查找
- const常量与define宏定义的区别
- VLC架构及流程分析
- 测试您的DB2数据库:用JMeter测量性能
- Apache使用mod_jk/mod_proxy模块实现代理、负载均衡的配置
- POJ 1275Cashier Employment (差分约束 + spfa)