Java编程技巧:小爬虫程序

简介: 本文介绍Java编程技巧之小爬虫程序的编程方法。     马萨玛索(http://www.masamaso.com/index.shtml)每天10点都会推出一折商品5件,就是秒购。男装质量还不错,所以就经常去抢,感觉手动太慢了,就写了一个小爬虫程序,让自己去爬,如果是金子页面(免费商品)就会自动打开,我就可以抢到了。

本文介绍Java编程技巧之小爬虫程序的编程方法。

 

  马萨玛索(http://www.masamaso.com/index.shtml)每天10点都会推出一折商品5件,就是秒购。男装质量还不错,所以就经常去抢,感觉手动太慢了,就写了一个小爬虫程序,让自己去爬,如果是金子页面(免费商品)就会自动打开,我就可以抢到了。和大家分享一下。

 

  思路:

 

  1. 把所有想要的商品的链接读到程序中。

 

  2. 分别打开每一个链接读取源代码

 

  3. 验证是否是金子商品(源代码中含有free_msg字符串)

 

  4. 如果是金子就把该链接用IE打开

 

  源代码:

 

  读链接文件:

package com.gogler.net;

 

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.LinkedList;

import java.util.List;

 

publicclassFileReader {

  private String fileName;

 

  public FileReader(){}

 

  public FileReader(StringfileName){

    this.fileName = fileName;

  }

 

  public List<String>getLines(){

    BufferedReaderreader = null;

   

    try{

      reader= newBufferedReader(newInputStreamReader(new FileInputStream(this.fileName)));

     

     

    }catch(FileNotFoundExceptione){

      e.printStackTrace();

    }

    List<String>lines =  new LinkedList();

    Stringline = null;

    try{

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

         lines.add(line);

      }

    }catch(IOException e){

      e.printStackTrace();

    }

    return lines;

  }

}

 

Url类:

 

package com.gogler.net;

 

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

 

publicclassUrl {

  Stringurl;

  public Url(){}

  public Url(String url){

    this.url = url;

  }

  public String getUrl() {

    returnurl;

  }

  publicvoid setUrl(String url) {

    this.url = url;

  }

 

  public URLConnectiongetConnection(){

    URLhttpURL = null;

    try{

      httpURL= newURL(this.url);

    }catch(MalformedURLExceptione){

      e.printStackTrace();

    }

    URLConnectionconn =null;

    if(httpURL != null){

      try{

         conn= httpURL.openConnection();

      }catch(IOException e){

         e.printStackTrace();

      }

    }

    return conn;

  }

 

  public BufferedReadergetBuffer(){

    URLConnectionconn = this.getConnection();

    BufferedReaderbr = null;

    if(conn ==null){

      returnnull;

    }

    conn.setConnectTimeout(1000*10);

    try{

      conn.connect();

      br= newBufferedReader(newInputStreamReader(conn.getInputStream()));

    }catch(IOException e){

      e.printStackTrace();

      returnnull;

    }

    return br;

  }

 

  publicboolean isExit(String str){

    BufferedReaderbis = getBuffer();

    boolean exit = false;

    Stringline = null;

    try{

       while((line =bis.readLine())!=null){

          exit =line.contains(str);

          if(exit){

            break;

          }

       }

    }catch(IOException e){

      e.printStackTrace();

    }finally{

       try{

       bis.close();

       }catch(IOException e){

         e.printStackTrace();

      }     

    }

    return exit;

   

   

   

  }

}

 

Digger类:

 

package com.gogler.net;

 

import java.io.IOException;

import java.util.List;

 

publicclassDigger extends Thread{

 

  private Url url;

  public Digger(){

    super();

  }

 

  public Digger(Url url){

    this.url = url;

  }

  /**

   * @param args

   */

  publicstaticvoid main(String[] args) {

    FileReaderreader = newFileReader("D:/allan/craber.txt");

    List<String>urls = reader.getLines();

    for(String s :urls){

      Urlurl = newUrl(s);

      Digger digger = new Digger(url);

      digger.start();

    }

        

  }

  @Override

  publicvoid run(){

    if(url.isExit("配置文件")){

      try{

          Runtime.getRuntime().exec("C:/Program Files/Internet Explorer/iexplore.exe" + url.getUrl());

      }catch(IOException e){

         e.printStackTrace();

      }

    }

   

   

   

  }

 

}

 

 

相关文章
|
2月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
2月前
|
数据采集 缓存 Java
Python vs Java:爬虫任务中的效率比较
Python vs Java:爬虫任务中的效率比较
|
16天前
|
数据采集 存储 Web App开发
Java爬虫:深入解析商品详情的利器
在数字化时代,信息处理能力成为企业竞争的关键。本文探讨如何利用Java编写高效、准确的商品详情爬虫,涵盖爬虫技术概述、Java爬虫优势、开发步骤、法律法规遵守及数据处理分析等内容,助力电商领域市场趋势把握与决策支持。
|
15天前
|
数据采集 存储 监控
Java爬虫:数据采集的强大工具
在数据驱动的时代,Java爬虫技术凭借其强大的功能和灵活性,成为企业获取市场信息、用户行为及竞争情报的关键工具。本文详细介绍了Java爬虫的工作原理、应用场景、构建方法及其重要性,强调了在合法合规的前提下,如何有效利用Java爬虫技术为企业决策提供支持。
|
23天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
51 1
|
14天前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
26 0
|
2月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
94 2
|
2月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
136 1
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
61 1
|
3月前
|
数据采集 Python
微博爬虫程序的定时
微博爬虫程序的定时
32 1