java抓取整个网页作为图片,进行保存为png格式.并通过阿里邮件定时进行发送到指定邮箱并抄送(开发环境macosx10.13.4+eclipse+jdk1.7)...

第一步:实现网页截屏

1. 下载phantomjs,用于实现网页的截屏。

我这里提供百度云的下载地址,包括linux32位以及64位,macosx和windows版本。

链接:https://pan.baidu.com/s/1rkgT8NgbRDN5_lNJlnIhMg  密码:3afb

2.解压文件编写java测试类

package com.jq;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

public class RobotExp6 {

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

                String s=getPictureByURL("http://www.iconfont.cn/plus","1");

                String s2=getPictureByURL("https://www.baidu.com/","2");

                List<String> list = new ArrayList<String>();

                list.add(s);

                list.add(s2);

                for(int i = 0 ; i < list.size() ; i++) {

                      System.out.println(list.get(i));

              }

        }         

        public static String getPictureByURL(String url,String image){

                String imageUrl="/Users/用户名/Desktop/"+image+".png";//生成图片的路径位置

                String BLANK = "  ";

                Process process = null;

                try {

                    process = Runtime.getRuntime().exec(

                             "/Users/用户名/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs" + BLANK //你的phantomjs路径

                             + "/Users/用户名/Desktop/screenshot.js" + BLANK //就是上文中那段javascript脚本的存放路径,在这个js里面可以修改抓取网页的大小

                             + url.trim() + BLANK //你的目标url地址

                             + imageUrl);

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

                InputStream inputStream = process.getInputStream();

                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

                String tmp = "";

                try {

                    while ((tmp = reader.readLine()) != null) {

                        if (reader != null) {

                            reader.close();

                        }

                        if (process != null) {

                            process.destroy();

                            process = null;

                        }

                        System.out.println("图片生成成功...");

                        break;

                    }

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

                return imageUrl;

        }

    }

第二步:实现邮件的发送

下载activation.jar  mail.jar

链接:https://pan.baidu.com/s/1WcnyPbH7fyhOlP-SdJwssg  密码:yo2i

package com.util;

import java.io.UnsupportedEncodingException;

import java.security.GeneralSecurityException;

import java.util.ArrayList;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;

//阿里企业邮箱进行发送邮件

public class SendEmail6

{

public static void main(String[] args) throws MessagingException, UnsupportedEncodingException {

 

    {

    Properties prop=new Properties();

    prop.put("mail.host","smtp.~.com" );//设置邮件服务器主机名

    prop.put("mail.transport.protocol", "smtp");//发送邮件协议名称

    prop.put("mail.smtp.auth", "true");//发送服务器需要身份验证

    Session session=Session.getInstance(prop); 

    session.setDebug(true);//开启debug调试

    //连接邮件服务器

    Transport ts=session.getTransport();

    ts.connect("****@~.com", "密码");  //登录的账户名和密码

    Message msg=createSimpleMail(session);//创建邮件对象

    ts.sendMessage(msg, msg.getAllRecipients());

    }

}

 public static MimeMessage createSimpleMail(Session session) throws AddressException,MessagingException, UnsupportedEncodingException{

     

    MimeMessage mm=new MimeMessage(session);

    mm.setFrom(new InternetAddress("邮箱")); //设置发件人     

    mm.setRecipient(Message.RecipientType.TO, new InternetAddress("邮箱地址")); //设置收件人

    mm.setRecipient(Message.RecipientType.CC, new InternetAddress("抄送人邮箱地址")); //设置抄送人

   

    mm.setSubject("主题!");

    // 设置正文

        BodyPart bp = new MimeBodyPart();

        String mailBody = "请查收";

        Multipart mp = new MimeMultipart(); ;   // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 

        bp.setContent(mailBody, "text/html;charset=utf-8");

        mp.addBodyPart(bp);        

        //设置图片生成的路径

        List<String> list = new ArrayList<String>();  

        list.add("/Users/~/Desktop/1.png");  

        list.add("/Users/·/Desktop/2.png");  

        for(int i = 0 ; i < list.size() ; i++) {

          System.out.println(list.get(i));

         }

        

        // 设置附件

        if (list != null && list.size() > 0) {

           for(int i = 0 ; i < list.size() ; i++) {

                bp = new MimeBodyPart();

                FileDataSource fds = new FileDataSource(list.get(i)); 

                bp.setDataHandler(new DataHandler(fds)); 

                bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));

                mp.addBodyPart(bp); 

            }

        }

        mm.setContent(mp); 

        mm.saveChanges(); 

    return mm;

    }

}

转载于:https://my.oschina.net/shanesen/blog/1821629

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值