phantomjsjava_Java爬虫:Jsoup + Phantomjs

本文介绍了如何使用Java结合Jsoup和PhantomJS进行网络爬虫。首先,讲解了Jsoup作为HTML解析器,通过DOM或CSS选择器获取网页数据。然后,介绍了PhantomJS作为无头浏览器,用于处理Ajax内容。详细演示了如何使用Jsoup连接网站获取标题和链接,以及如何用PhantomJS执行JavaScript并获取结果。最后,展示了Java调用PhantomJS执行爬虫脚本的示例代码。
摘要由CSDN通过智能技术生成

(一)Jsoup

Jsoup是一个Java开源HTML解析器,可直接解析某个URL地址、HTML文本内容。通过Dom或Css选择器来查找、取出数据,实现爬虫。

maven坐标

org.jsoup

jsoup

1.11.2

演示Demo

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.select.Elements;

import java.io.IOException;

public class JsoupDemo

{

public static void main( String[] args ) throws IOException {

Document doc = Jsoup.connect("http://www.baidu.com").get();

System.out.println("title:"+doc.title());

Elements es = doc.select("area");

//Elements es = doc.getElementByTag("area");

System.out.println("百度图片点击路径:"+es.attr("href"));

}

}

(二 )PhantomJs

PhantomJS是一个可编程的无头浏览器。通过PhantomJs可以采集Ajax生成的内容。

无头浏览器:一个完整的浏览器内核,包括js解析引擎,渲染引擎,请求处理等,但是不包括显示和用户交互页面的浏览器。

步骤:

下载安装,配置环境变量

编写并执行js脚本

演示Demo

var page = require("webpage").create(), //网页对象

system = require("system"), //系统对象

address,t;

phantom.outputEncoding='gbk'; //设置输出编码

//phantom.outputEncoding='utf-8'; //设置输出编码

var arr = system.args;

//判断参数是否传入

if(arr.length==1){

console.log("请输入待请求url");

phantom.exit(0);

} else {

address = arr[1];

console.log("开始访问页面:"+address);

t = Date.now();

//访问页面

page.open(address,function(status){

if(status !== 'success'){

console.log('page faild to load.');

phantom.exit();

} else {

t = Date.now() - t;

console.log("页面访问结束:耗时:"+t+"ms");

//引入jquery

page.includeJs("http://code.jquery.com/jquery-2.2.4.min.js",function(){

var result = (page.evaluate(function(){

return $('area').attr('href');

}));

console.log("图片点击路径:"+result);

phantom.exit();

})

}

})

}

假设文件名为 c:/baidu.js;在命令行中执行 phantomjs c:/baidu.js http://www.baidu.com

java 调用Phantomjs

演示Demo

import java.io.*;

public class PhantomJsDemo

{

public static void main( String[] args ) throws IOException {

Runtime rn = Runtime.getRuntime();

String url = "http://www.baidu.com"

Process process = rn.exec("phantomjs c:/baidu.js " + url);

BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));

StringBuffer sb = new StringBuffer();

String temp = "";

while((temp=br.readLine())!=null){

sb.append(temp);

}

System.out.println(sb.toString());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值