- 浏览: 564816 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (618)
- java (109)
- Java web (43)
- javascript (52)
- js (15)
- 闭包 (2)
- maven (8)
- 杂 (28)
- python (47)
- linux (51)
- git (18)
- (1)
- mysql (31)
- 管理 (1)
- redis (6)
- 操作系统 (12)
- 网络 (13)
- mongo (1)
- nginx (17)
- web (8)
- ffmpeg (1)
- python安装包 (0)
- php (49)
- imagemagic (1)
- eclipse (21)
- django (4)
- 学习 (1)
- 书籍 (1)
- uml (3)
- emacs (19)
- svn (2)
- netty (9)
- joomla (1)
- css (1)
- 推送 (2)
- android (6)
- memcached (2)
- docker、 (0)
- docker (7)
- go (1)
- resin (1)
- groovy (1)
- spring (1)
最新评论
-
chokee:
...
Spring3 MVC 深入研究 -
googleyufei:
很有用, 我现在打算学学Python. 这些资料的很及时.
python的几个实用网站(转的) -
hujingwei1001:
太好了找的就是它
easy explore -
xiangtui:
例子举得不错。。。学习了
java callback -
幻影桃花源:
太好了,謝謝
Spring3 MVC 深入研究
有的网页,不能直接通过wget/curl等命令、或者直接使用Python中的liburl这样的函数库来直接获取其真正展现给用户的信息,因为里面包含有JavaScript脚本(而该JS和页面数据的生成相关),需要通过Firefox、Chrome等浏览器渲染后才能得到想要看的结果。
例如,我想查询的一个根据IP查询到地理位置的网页:http://www.ip.cn/125.95.26.81
为了写程序来自动获取我想要的数据,比如 http://www.ip.cn/125.95.26.81 中网页中的“广东省佛山市 电信”这几个字。一般来说,有如下两种方案:
1. 写Web UI自动化脚本,用Selenium启动真正的浏览器(如:IE、Firefox)来打开该网页,然后调用webdriver获取想要的页面元素。
2. 找一种浏览器渲染引擎,能够让其解析网页并执行网页中需要初始化JS,然后将JS、CSS等执行后的HTML代码输出出来。
启动真正的浏览器,可能带来两个问题:一个是需要的时间较长,另一个是UI自动化易受干扰、不够稳定。
而第2个方法,一时没有找到特别好的库(暂用Python语言)。
根据网上的一些方案和请教同事,最后在Selenium webdriver中找到了不启动浏览器但是带基于Webkit引擎的名为“PhantomJS”的driver。后来找资料发现,LinkedIn、Twitter等知名互联网公司也在使用PhantomJS用于测试。
对于PhantomJS的好处,可阅读:http://phantomjs.org/ (Headless Website Testing, Screen Capture,Page Automation, Network Monitoring)
对于哪些情况下不适合用PhantomJS而应该用真正的Browser,可阅读:http://www.chrisle.me/2013/08/5-reasons-i-chose-selenium-over-phantomjs/
这里就不专门说PhantomJS的优劣势了,不过,它能解决我当前的问题。
先通过官方网站下载PhantomJS的可执行文件即可;然后像正常写Selenium自动化脚本一样来做即可。
我的一个示例程序如下:
[Copy to clipboard]View Code BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Created on Dec 6, 2013
@author: Jay <smile665@gmail.com>
@description: use PhantomJS to parse a web page to get the geo info of an IP
'''
from selenium import webdriver
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
driver = webdriver.PhantomJS(executable_path='./phantomjs') #这要可能需要制定phatomjs可执行文件的位置
driver.get("http://www.ip.cn/125.95.26.81")
#print driver.current_url
#print driver.page_source
print driver.find_element_by_id('result').text.split('\n')[0].split('来自:')[1]
driver.quit
[Copy to clipboard]View Code BASH
1
2
jay@jay-linux:~/workspace/python_test$ python try_phantomjs.py
广东省佛山市 电信
当然,刚好目前的Selenium(2.38.2)和PhontomJS(1.9.2)一起用有bug,见我另一篇文章:Selenium 2.38.2 和 PhantomJS 1.9.2 一起使用的一个Bug
参考资料:
很好的入门指引:http://www.realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/
官方说明:
https://github.com/detro/ghostdriver
http://phantomjs.org/
http://phantomjs.org/users.html
一个和PhantomJS类似的东东,不过它基于Gecko而不是Webkit:http://slimerjs.org/
这里有位兄台也使用PhantomJS抓取数据,可以看一下:http://blog.chinaunix.net/uid-22414998-id-3692113.html
例如,我想查询的一个根据IP查询到地理位置的网页:http://www.ip.cn/125.95.26.81
为了写程序来自动获取我想要的数据,比如 http://www.ip.cn/125.95.26.81 中网页中的“广东省佛山市 电信”这几个字。一般来说,有如下两种方案:
1. 写Web UI自动化脚本,用Selenium启动真正的浏览器(如:IE、Firefox)来打开该网页,然后调用webdriver获取想要的页面元素。
2. 找一种浏览器渲染引擎,能够让其解析网页并执行网页中需要初始化JS,然后将JS、CSS等执行后的HTML代码输出出来。
启动真正的浏览器,可能带来两个问题:一个是需要的时间较长,另一个是UI自动化易受干扰、不够稳定。
而第2个方法,一时没有找到特别好的库(暂用Python语言)。
根据网上的一些方案和请教同事,最后在Selenium webdriver中找到了不启动浏览器但是带基于Webkit引擎的名为“PhantomJS”的driver。后来找资料发现,LinkedIn、Twitter等知名互联网公司也在使用PhantomJS用于测试。
对于PhantomJS的好处,可阅读:http://phantomjs.org/ (Headless Website Testing, Screen Capture,Page Automation, Network Monitoring)
对于哪些情况下不适合用PhantomJS而应该用真正的Browser,可阅读:http://www.chrisle.me/2013/08/5-reasons-i-chose-selenium-over-phantomjs/
这里就不专门说PhantomJS的优劣势了,不过,它能解决我当前的问题。
先通过官方网站下载PhantomJS的可执行文件即可;然后像正常写Selenium自动化脚本一样来做即可。
我的一个示例程序如下:
[Copy to clipboard]View Code BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Created on Dec 6, 2013
@author: Jay <smile665@gmail.com>
@description: use PhantomJS to parse a web page to get the geo info of an IP
'''
from selenium import webdriver
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
driver = webdriver.PhantomJS(executable_path='./phantomjs') #这要可能需要制定phatomjs可执行文件的位置
driver.get("http://www.ip.cn/125.95.26.81")
#print driver.current_url
#print driver.page_source
print driver.find_element_by_id('result').text.split('\n')[0].split('来自:')[1]
driver.quit
[Copy to clipboard]View Code BASH
1
2
jay@jay-linux:~/workspace/python_test$ python try_phantomjs.py
广东省佛山市 电信
当然,刚好目前的Selenium(2.38.2)和PhontomJS(1.9.2)一起用有bug,见我另一篇文章:Selenium 2.38.2 和 PhantomJS 1.9.2 一起使用的一个Bug
参考资料:
很好的入门指引:http://www.realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/
官方说明:
https://github.com/detro/ghostdriver
http://phantomjs.org/
http://phantomjs.org/users.html
一个和PhantomJS类似的东东,不过它基于Gecko而不是Webkit:http://slimerjs.org/
这里有位兄台也使用PhantomJS抓取数据,可以看一下:http://blog.chinaunix.net/uid-22414998-id-3692113.html
发表评论
-
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2014-12-09 10:33 786原文地址:http://www.techo ... -
241个jquery插件—jquery插件大全
2014-12-09 10:26 802原文地址:http://blog.csdn.net/adsda ... -
前端ui的js框架
2014-09-04 16:45 593原文地址:http://www.quickui.net/v3/ ... -
2014 年最火的21个JavaScript框架
2014-09-03 17:25 477原文地址:http://www.iteye.com/news/ ... -
Bootstrap 栅格系统
2014-08-08 15:53 517原文地址:http://www.cnblogs.com/lin ... -
自定义Bootstrap
2014-08-08 10:14 685原文地址:http://www.w3cplus.com/css ... -
使用python/casperjs编写终极爬虫-客户端App的抓取
2014-08-06 18:09 9531.缘起 随着移动互 ... -
数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置
2014-08-06 17:56 621原文地址:http://blog.chin ... -
ubuntu12.04 下安装nodejs【整理】
2014-06-12 14:38 731ubuntu12.04 下安装nodejs【整理】 作者:杭州 ... -
Ubuntu安装nodeJS
2014-06-12 14:38 512Ubuntu安装nodeJS 安装环境 ubuntu12. ... -
纯js页面跳转整理
2014-05-20 18:06 526纯js页面跳转整理 js页面跳转 js方式的页面跳转 1. ... -
细说Cookie
2013-09-29 15:14 648细说Cookie 阅读目录 开始 ... -
JavaScript Source Map 详解
2013-08-30 09:49 808JavaScript Source Map 详解 ... -
9 个超实用的 jQuery 代码片段
2013-07-15 14:49 761jQuery以其强大的功能和简单的使用成为了前端开发者最喜欢 ... -
前端工具导航
2013-07-11 14:36 1004http://f2e.im/static/pages/nav ... -
主题:50个令人惊奇的jQuery插件
2013-05-29 18:17 988jQuery拥有强大的有创造性的程序员群体。 然而,它很难通 ... -
jquery触发事件
2013-05-23 17:25 610Snandy Stop, thinking is th ... -
jquery事件命名空间
2013-05-23 17:13 517JQUERY事件命名空间 2012 ... -
jQuery的事件命名空间-Namespaced Events
2013-05-23 17:12 632jQuery的事件命名空间-Namespaced Event ... -
JQuery自定义事件的应用 JQuery最佳实践
2013-05-23 16:54 799本文主要介绍JQuery框架里面支持的自定义事件模型,通过实 ...
相关推荐
通过以上步骤,你可以在C#环境中利用Selenium WebDriver和PhantomJS实现对JavaScript渲染网页的数据抓取。这为处理动态网页提供了便利,特别是在自动化爬虫任务中,能有效获取到页面完整且动态生成的内容。在实际...
在IT行业中,自动化测试和网页数据抓取是两个重要的领域,而Selenium、PhantomJS以及Python在这两个领域中都扮演着关键角色。本话题主要关注如何利用Selenium结合PhantomJS通过Python来获取HTML动态生成的数据。 ...
爬虫简介: WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量...源码中集成了Jsoup,可进行精准的网页解析。2.x版本中集成了selenium,可以处理javascript生成的数据。
4. **phantomjs的运用**:phantomjs是一款无头浏览器,它没有图形界面,但可以执行JavaScript,非常适合自动化测试和网页抓取。在本项目中,我们将selenium与phantomjs结合,实现对动态网页的无界面抓取,减少了资源...
在C#.NET中,可以使用Selenium WebDriver接口与PhantomJS配合,进一步提升爬虫的交互能力和适应性。通过Selenium,可以模拟用户的各种操作,如滚动页面、触发事件等,使爬虫能够处理更复杂的网页逻辑。 在项目...
示例代码中使用了Selenium的webdriver来控制PhantomJS浏览器,通过加载URL并执行JavaScript,最终抓取到了京东手机页面中的手机名称和价格信息。 在实际应用中,这样的爬虫可以应用于多种场景,比如价格监控、市场...
开发者可能在这里编写了启动Selenium、配置PhantomJS、初始化AngleSharp解析器、发送网络请求、解析网页和提取数据的主要代码。 总结起来,这个项目展示了如何利用C#、AngleSharp和Selenium PhantomJS来处理动态...
本文介绍了如何使用Selenium和PhantomJS工具来爬取豆瓣读书网站的相关信息。Selenium是一种用于Web应用程序测试的工具,它可以模拟浏览器中的用户行为,包括导航、点击按钮、填写表单等。PhantomJS是一个无头浏览器...
6. **安装与配置**:使用Selenium和PhantomJS之前,需要先确保正确安装了它们,这通常涉及下载PhantomJS二进制文件并将其添加到系统路径,以及安装Python的`selenium`库。 7. **异常处理**:在编写自动化脚本时,...
PhantomJs是一款无头浏览器,它允许你在没有GUI(图形用户界面)的情况下运行JavaScript和WebPage,这在自动化测试和网页抓取时非常有用。Selenium WebDriver是一个用于自动化浏览器的工具,它可以控制浏览器进行...
"selenium + phantomJS + pyqurey + mongo"揭示了该项目使用的技术栈,包括自动化浏览器测试库Selenium,无头浏览器 PhantomJS,Python的数据库查询库Pyquery,以及用于数据存储的MongoDB数据库。 【描述分析】 ...
3. **引入Selenium和PhantomJS**:在需要处理动态内容的地方,使用Selenium启动PhantomJS实例,通过执行JavaScript来加载和渲染页面。Selenium的WebDriver API允许与PhantomJS进行交互,执行点击、滚动、等待等操作...
Selenium 和 PhantomJS 是两个非常强大的工具,在自动化测试和网页抓取领域应用广泛。本文主要介绍如何利用 Selenium 控制 PhantomJS 来执行特定的 API 并获取执行结果,这对于那些需要进行动态网页抓取的任务特别...
在本项目实践中,我们探索了如何使用C#.NET框架结合PhantomJS和Selenium构建一个高级的网络爬虫程序,该程序能够处理JavaScript渲染的网页并执行JavaScript代码,从而更全面地获取网络数据。以下是对这个项目的详细...
`run.js`可能是包含了自动化测试逻辑的文件,例如,它可能使用了Page Object模式或者Selenium WebDriver API来模拟用户交互,如点击按钮、填写表单等。 自动化测试是软件开发过程中的重要环节,它能够有效地检查...
2. **基于Webkit**:PhantomJS使用WebKit作为其渲染引擎,这意味着它能准确地模拟真实浏览器的行为,这对于网页自动化和测试至关重要,因为这意味着你可以信任它对网页的解析和执行。 3. **JavaScript API**:...
4. **网页抓取和数据提取**:由于PhantomJS可以像普通浏览器一样加载和解析HTML,它非常适合网页抓取和数据提取任务。开发者可以通过JavaScript代码来遍历DOM,提取所需信息,或者模拟用户交互,如点击按钮、填写...