phantomjs 抓取网页

2024-03-24 05:08
文章标签 抓取 网页 phantomjs

本文主要是介绍phantomjs 抓取网页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

phantomjs:我的理解就是它是一个无显示的浏览器,也就是说除了不能显示页面内容以外,浏览器能干的活儿它基本上都能干。so,最近由于实验需要,要从某电商爬一点图片,但是它又是AJAX生成的,单纯的爬取HTML的方法是行不通的,o(╯□╰)o,于是在经过一些求助后,;了解到了PHANTOMJS,鉴于网上没找到太多实例,只好自己总结下以备不时之需。另外直接查看官网上的说明文档会有很大收获滴~顺便锻炼下自己英文嘛o(╯□╰)o。下面举个栗子来具体实现:

把phantom下载解压到D盘,在目录下有phantomjs.exe文件(win7) 通过js文件可以调用这个WebKit来达到需要的目的:比方说生成网页快照之类吧。我要做的是爬AJAX页面上的图片。先看js文件:命名为s.js

system = require('system')   //传递一些需要的参数给js文件address = system.args[1];//获得命令行第二个参数 ,也就是指定要加载的页面地址,接下来会用到  var page = require('webpage').create();var url = address;page.open(url, function (status) {if (status !== 'success') {console.log('Unable to post!');} else {var encodings = ["euc-jp", "sjis", "utf8", "System"];//这一步是用来测试输出的编码格式,选择合适的编码格式很重要,不然你抓取下来的页面会乱码o(╯□╰)o,给出的几个编码格式是官网上的例子,根据具体需要自己去调整。for (var i = 3; i < encodings.length; i++) {//我这里只要一种编码就OK啦phantom.outputEncoding = encodings[i];console.log(phantom.outputEncoding+page.content);//最后返回webkit加载之后的页面内容}}phantom.exit();
});   


接下来就是java类的编写:

package com.mvc.rest;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;public class GetAjaxHtml {public static String getAjaxContent(String url) throws Exception {Runtime rt = Runtime.getRuntime();Process p = rt.exec("D:/tools/phantomjs/phantomjs.exe D:/tools/phantomjs/examples/s.js " + url);InputStream is = p.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));StringBuffer sbf = new StringBuffer();String tmp = "";while((tmp=br.readLine())!=null) {sbf.append(tmp + "\n");}return sbf.toString();}public static void main(String[] args) throws Exception {long start = System.currentTimeMillis();String result = getAjaxContent("http://114.111.162.220:8093/404Web/");System.out.println(result);long end = System.currentTimeMillis();System.out.println("===============耗时:" + (end - start) + "===============");}
}


到这里,就得到了所需要的AJAX完整页面的代码字符串了,接下来就可以do whatever you want啦

这篇关于phantomjs 抓取网页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/840529

相关文章

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

禁止复制的网页怎么复制

禁止复制的网页怎么复制 文章目录 禁止复制的网页怎么复制前言准备工作操作步骤一、在浏览器菜单中找到“开发者工具”二、点击“检查元素(inspect element)”按钮三、在网页中选取需要的片段,锁定对应的元素四、复制被选中的元素五、粘贴到记事本,以`.html`为后缀命名六、打开`xxx.html`,优雅地复制 前言 在浏览网页的时候,有的网页内容无法复制。比如「360

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器

PHP抓取网站图片脚本

方法一: <?phpheader("Content-type:image/jpeg"); class download_image{function read_url($str) { $file=fopen($str,"r");$result = ''; while(!feof($file)) { $result.=fgets($file,9999); } fclose($file); re

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

(入门篇)JavaScript 网页设计案例浅析-简单的交互式图片轮播

网页设计已经成为了每个前端开发者的必备技能,而 JavaScript 作为前端三大基础之一,更是为网页赋予了互动性和动态效果。本篇文章将通过一个简单的 JavaScript 案例,带你了解网页设计中的一些常见技巧和技术原理。今天就说一说一个常见的图片轮播效果。相信大家在各类电商网站、个人博客或者展示页面中,都看到过这种轮播图。它的核心功能是展示多张图片,并且用户可以通过点击按钮,左右切换图片。