Java爬虫:Jsoup + Phantomjs

(一)Jsoup

Jsoup是一个Java开源HTML剖析器,可直接剖析某个URL地点、HTML文本内容。经由过程Dom或Css选择器来查找、掏出数据,完成爬虫。

maven坐标

    <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>1.11.2</version>
    </dependency>

Jsoup开辟指南(中文版)

演示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剖析引擎,衬着引擎,要求处置惩罚等,然则不包含显现和用户交互页面的浏览器。

PhantomJs官方文档

步骤:

  1. 下载安装,设置环境变量
  2. 编写并实行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());
    }
}
    原文作者:roylion
    原文地址: https://segmentfault.com/a/1190000013854068
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞