适用于元搜索引擎的搜索引擎结果采集方法

1 最简单的下载网页方法
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class Exec {
        public static void main(String args[]) {
                FileOutputStream fos;
                URL url;
                InputStream is;
                int i;

                try {
                        fos = new FileOutputStream("storedPage.html");
                        url = new URL("http://www.baidu.com");
                        System.out.println(url.getFile());
                        is = url.openStream();

                        i = is.read();
                        while (i > 0) {
                                fos.write(i);
                                i = is.read();
                        }
                        fos.close();
                        is.close();
                } catch (IOException e) {
                }
        }
}

2 获取搜索引擎结果
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class Exec {
        public static void main(String args[]) {
                FileOutputStream fos;
                URL url;
                InputStream is;
                int i;

                try {
                        fos = new FileOutputStream("storedPage.html");
                        url = new URL("http://www.baidu.com/s?wd=mp3");
                        System.out.println(url.getFile());
                        is = url.openStream();

                        i = is.read();
                        while (i > 0) {
                                fos.write(i);
                                i = is.read();
                        }
                        fos.close();
                        is.close();
                } catch (IOException e) {
                }
        }
}

3 基于swing窗体的搜索引擎结果采集程序
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

//测试类
public class Exec {
        public static void main(String[] args) {
                // 创建窗体类变量
                DemoWindow dw = new DemoWindow("网络文件下载");

                // 将窗体的宽度和高度分别设置为屏幕宽度和屏幕高度的1/3,左上角位置也设置为屏幕宽度和屏幕高度的1/3处
                Toolkit theKit = dw.getToolkit();
                Dimension wndSize = theKit.getScreenSize();
                dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
                                wndSize.height / 3);

                // 点击关闭按钮可以退出程序
                dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                // 设置窗体为可见
                dw.setVisible(true);
        }
}

// 界面窗体
class DemoWindow extends JFrame implements ActionListener {
        // 输入网络文件URL的文本框
        JTextField jtf = new JTextField(25);

        // 操作按钮
        JButton jb = new JButton("下载");

        // 显示网络文件信息的文本区
        JTextArea jta = new JTextArea();

        // 设置文本区的滚动条
        int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
        int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
        JScrollPane jsp = new JScrollPane(jta, v, h);

        // 布局面板
        JPanel jp = new JPanel();

        // 网络文件下载
        Downloader downloader;

        // 构造函数
        public DemoWindow(String title) {
                super(title);

                // 窗体布局
                jp.setLayout(new FlowLayout(FlowLayout.LEFT));
                jp.add(jtf);
                jp.add(jb);
                add(jp, BorderLayout.NORTH);
                add(jsp, BorderLayout.CENTER);

                // 添加事件监听器
                jtf.addActionListener(this);
                jb.addActionListener(this);
        }

        // 响应单击按钮
        public void actionPerformed(ActionEvent e) {
                // 创建网络文件下载类变量
                downloader = new Downloader(jtf.getText(), jta);

                // 启动下载线程
                Thread thread = new Thread(downloader);
                thread.start();
        }
}

// 网络文件下载类
class Downloader implements Runnable {
        // 网络文件的URL
        String urlString;

        // 显示网络文件信息的文本区
        JTextArea jta;

        // 构造函数
        public Downloader(String urlString, JTextArea jta) {
                // 设置属性
                this.urlString = urlString;
                this.jta = jta;
        }

        // 下载网络文件的线程方法
        public void run() {
                // 网络文件的相关信息
                StringBuffer info = new StringBuffer();
                try {
                        // 网络文件的URL
                        URL url = new URL(urlString);

                        // 打开该网络文件的URL连接
                        URLConnection urlConn = url.openConnection();

                        // 添加网络文件的相关信息
                        info.append("主机: " + url.getHost() + "/n");
                        info.append("端口: " + url.getDefaultPort() + "/n");
                        info.append("网络文件的类型: " + urlConn.getContentType() + "/n");
                        info.append("长度: " + urlConn.getContentLength() + "/n");
                        info.append("正在下载...");

                        // 显示网络文件的相关信息
                        jta.setText(info.toString());

                        // 创建网络文件的输入流
                        InputStream is = urlConn.getInputStream();

                        // 获取网络文件的文件名称
                        String localFileName = url.getFile().substring(
                                        url.getFile().lastIndexOf("/") + 1);

                        System.out.println(localFileName);
                        // http://www.baidu.com/index.html

                        // 创建本地文件输出流
                        FileOutputStream fos = new FileOutputStream(localFileName);

                        // 读取网络文件到本地文件
                        int data;
                        while ((data = is.read()) != -1) {
                                fos.write(data);
                        }

                        // 关闭流
                        is.close();
                        fos.close();
                } catch (Exception e) {
                        System.out.println(e.getMessage());
                }
                jta.append("下载完毕!");
        }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leeshuqing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值