`
zhb8015
  • 浏览: 397126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Spring Roo杂谈
浏览量:0
社区版块
存档分类
最新评论

Java编程技巧:小爬虫程序(转)

阅读更多

原文地址:http://webservices.ctocio.com.cn/java/104/9390604.shtml

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

  思路:

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

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

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

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

  源代码:

  读链接文件:

 

 


 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; 
  /** 
  * @author Administrator 
  * 
  */ 
  public class FileReader { 
  private String fileName; 
  public FileReader() { 
  } 
  public FileReader(String fileName) { 
  this.fileName = fileName; 
  } 
  /** 
  * 读取链接,返回一个List 
  * @return 
  */ 
  public List getLines() { 
  BufferedReader reader = null; 
  try { 
  reader = new BufferedReader(new InputStreamReader(new FileInputStream(this.fileName))); 
  } catch (FileNotFoundException e) { 
  e.printStackTrace(); 
  } 
  List lines = new LinkedList(); 
  String line = null; 
  try { 
  while ( (line = reader.readLine()) != null) { 
  lines.add(line); 
  } 
  } catch (IOException e) { 
  e.printStackTrace(); 
  } finally { 
  try { 
  reader.close(); 
  } catch (IOException e) { 
  e.printStackTrace(); 
  } 
  } 
  return lines; 
  } 
  }

 

  URL类:

 

 


 import java.io.BufferedReader; 
  import java.io.IOException; 
  import java.io.InputStreamReader; 
  import java.net.MalformedURLException; 
  import java.net.URL; 
  import java.net.URLConnection; 
  /** 
  * @author Administrator 
  * 
  */ 
  public class Url { 
  private String url; 
  public Url() { 
  } 
  public Url(String url) { 
  this.url = url; 
  } 
  public String getUrl() { 
  return url; 
  } 
  public void setUrl(String url) { 
  this.url = url; 
  } 
  /** 
  * 获得链接 
  * @return 
  */ 
  public URLConnection getConnection() { 
  URL httpUrl = null; 
  try { 
  httpUrl = new URL(url); 
  } catch (MalformedURLException e) { 
  e.printStackTrace(); 
  } 
  URLConnection conn = null; 
  if(httpUrl != null) { 
  try { 
  conn = httpUrl.openConnection(); 
  } catch (IOException e) { 
  e.printStackTrace(); 
  } 
  } 
  return conn; 
  } 
  /** 
  * 获得链接上的输出流 
  * @return 
  */ 
  public BufferedReader getReader() { 
  URLConnection conn = getConnection(); 
  BufferedReader br = null; 
  if(conn == null) { 
  return null; 
  } 
  conn.setConnectTimeout(9000); 
  try { 
  conn.connect(); 
  br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
  } catch (IOException e) { 
  e.printStackTrace(); 
  return null; 
  } 
  return br; 
  } 
  /** 
  * 从输出流中一行一行读取文件,查看是否含有str字符串,有就返回真 
  * @param str 
  * @return 
  */ 
  public boolean isExist(String str) { 
  BufferedReader bis = getReader(); 
  boolean exist = false; 
  String line = null; 
  try { 
  while ( (line = bis.readLine()) != null) { 
  exist = line.contains(str); 
  if(exist) { 
  break; 
  } 
  } 
  } catch (IOException e) { 
  e.printStackTrace(); 
  } finally { 
  try { 
  bis.close(); 
  } catch (IOException e) { 
  e.printStackTrace(); 
  } 
  } 
  return exist; 
  } 
  }

 

  Digger类:

 

 


 import java.io.IOException; 
  import java.util.List; 
  /** 
  * @author Administrator 
  * 
  */ 
  public class Digger extends Thread{ 
  private Url url; 
  public Digger() { 
  super(); 
  } 
  public Digger(Url url) { 
  this.url = url; 
  } 
  /** 
  * main方法,把配置信息(链接)读入程序,并为每一个链接开启一个线程 
  * @param args 
  * @throws IOException 
  */ 
  public static void main(String[] args) throws IOException { 
  FileReader reader = new FileReader("F:/myworkspace/workspace/diggold/src/url.txt"); 
  List urls = reader.getLines(); 
  for (String string : urls) { 
  Url url = new Url(string); 
  Digger digger = new Digger(url); 
  digger.start(); 
  } 
  // Runtime.getRuntime().exec("C:/Program Files/Internet Explorer/iexplore.exe http://www.masamaso.com/index.shtml"); 
  } 
  /** 
  * 查看该链接是否存在free_msg字段,存在即为金子 用IE打开该链接 
  */ 
  @Override 
  public void run() { 
  if(url.isExist("free_msg")) { 
  try { 
  Runtime.getRuntime().exec("C:/Program Files/Internet Explorer/iexplore.exe " + url.getUrl()); 
  } catch (IOException e) { 
  e.printStackTrace(); 
  } 
  } 
  System.out.println(url.getUrl() + "END!"); 
  } 
  }

 

  url.txt配置文件

  http://www.masamaso.com/goods.php?id=3128

  http://www.masamaso.com/goods.php?id=3132

  http://www.masamaso.com/goods.php?id=3120

  写的比较简单,但是挺实用,各位看官莫笑话哈。

 

分享到:
评论
1 楼 liutingna86 2014-07-10  
程序没有提取新的链接,只是分析url.txt中链接页面的内容是否含有关键词。

相关推荐

    Java爬虫详细完整源码实例

    Java爬虫技术是一种在互联网上自动获取网页信息的程序,它是大数据分析、搜索引擎优化和内容监控等领域的基础工具。在这个“Java爬虫详细完整源码实例”中,我们可以深入理解如何利用Java语言来构建一个功能完备的...

    Java爬虫进阶:高效爬取CSDN技术文章.zip

    在本压缩包“Java爬虫进阶:高效爬取CSDN技术文章.zip”中,...这将有助于提升你的Java编程技巧,尤其是网络编程和数据处理方面的能力。记得在实践过程中,要始终遵守法律法规和道德规范,合理合法地使用网络爬虫技术。

    用JAVA编写的小爬虫

    【标题】"用JAVA编写的小爬虫"涉及的是Java编程语言和网络爬虫技术的应用。在信息技术领域,Java是一种广泛使用的面向对象的编程语言,以其跨平台性、安全性以及强大的库支持而闻名。网络爬虫,又称为网页蜘蛛或网络...

    java爬虫项目实战源码 爬虫源码下载+赠送源码.zip

    Java爬虫是一种利用编程语言(这里是Java)编写的应用程序,其目的是自动地在网络中获取大量信息。Java作为一门强大的面向对象的语言,具有良好的跨平台性和丰富的库支持,非常适合开发爬虫项目。 在Java爬虫项目中...

    爬虫爬取网易汽车车型库【Java代码】

    这个任务涉及到网络爬虫的基础知识,Java编程技巧,以及可能的数据存储和处理技术。 首先,让我们详细了解一下爬虫的基本概念。网络爬虫,也称为网页蜘蛛,是一种自动化程序,用于浏览互联网并抓取信息。在这个案例...

    Java编写spider网络爬虫程序源码

    Java编写Spider网络爬虫程序是IT领域中一种常见的技术实践,它主要用来自动化地抓取互联网上的信息。在这个源码中,我们可以学习到如何利用Java实现一个基础的网络爬虫,以便于下载指定域名范围内的网页内容,甚至...

    用Java写的海贼王漫画爬虫

    综上所述,这个Java爬虫项目涵盖了网络爬虫的基本原理和实践技巧,是一个很好的学习和实践Java网络编程以及数据抓取能力的案例。通过对这些知识点的深入理解和应用,可以提升开发者在实际工作中的技能和解决问题的...

    基于Java线程池技术的数据爬虫设计与实现.pdf

    此外,为了进一步优化爬虫程序的性能,可以采用一些额外的技巧和策略,例如合理地管理内存、合理地处理异常等。同时,也可以考虑使用分布式爬虫,将爬取任务分散到多台机器上,这可以极大地提高爬取速度和规模。 ...

    Java爬虫实战:轻松爬取CSDN个人博客文章.zip

    Java爬虫实战:轻松爬取CSDN个人博客文章是一个基于Java编程语言的项目,旨在帮助用户自动化地从CSDN(China Software Developer Network)网站抓取个人博客文章并保存到本地。这个项目对于那些想要备份自己或者他人...

    Java网络爬虫蜘蛛源码

    Java网络爬虫,也称为网页抓取或数据挖掘,是一种自动化程序,用于从互联网上抓取大量信息。这种技术在数据分析、市场研究、新闻聚合、搜索引擎优化等领域有着广泛的应用。本资源提供的是Java语言编写的网络爬虫源码...

    java开发的网络爬虫PDF+源码.zip

    Java作为一种强大的编程语言,因其稳定性和跨平台特性,常被用于开发网络爬虫。 PDF教程中,可能涵盖了以下几个关键知识点: 1. **网络爬虫基础**:包括HTTP协议的理解、URL的解析、HTML和XML的基础知识,这些都是...

    Java爬虫实战教程:CSDN文章爬取与解析技巧.zip

    Java爬虫是使用Java编程语言编写的一种程序,用于自动化地从互联网上抓取数据。常见的Java爬虫框架有Jsoup、HtmlUnit、WebMagic等。本教程可能主要基于Jsoup,因为它轻量级且易于理解和使用,能够解析HTML文档,提取...

    Java爬虫。。。。。

    Java爬虫技术是一种利用编程语言(本例中是Java)编写程序来自动化地抓取互联网上的数据的方法。这种技术在数据分析、市场研究、网站维护等多个领域都有广泛应用。Java作为一门面向对象的语言,提供了丰富的库和工具...

    Java实现网路爬虫爬取新闻信息

    本项目"Java实现网路爬虫爬取新闻信息"是利用Java编程语言来构建一个能够从指定网站抓取新闻内容的爬虫。在这个过程中,我们不仅需要掌握Java基础,还需要理解网络请求、HTML解析、正则表达式以及数据库操作等技术。...

    网络爬虫程序合集

    这些基础技巧是所有爬虫程序的起点,包括发送HTTP请求、解析HTML结构以及提取所需数据。 接下来,"网络爬虫实现原理及详解JCF2011-11-17.doc"可能深入讨论爬虫的工作原理,包括URL管理(如何跟踪已访问和待访问的...

    Java网络爬虫,附源码和文档

    学习Java网络爬虫不仅需要掌握Java编程基础,还需要了解HTTP协议、HTML结构以及数据存储的相关知识。通过这个项目,你可以: 1. 学习如何构建爬虫框架,理解多线程、异步处理在爬虫中的应用。 2. 探索网页抓取的...

    基于Java开发的简单steam爬虫。使用jsoup+jdbc实现用户资料爬取存储以及商店页面游戏图片下载。.zip

    .zip”提供了一个Java编程的实例,用于开发一个简单的Steam平台数据爬虫。这个项目主要涉及以下几个关键知识点: 1. **Java编程语言**:作为项目的基础,Java是一种广泛使用的面向对象的编程语言,具有跨平台性、...

    网络机器人java编程指南

    《网络机器人Java编程指南》是一本专注于教读者如何利用Java语言进行网络爬虫开发的教程。网络机器人,也称为网络爬虫或Web抓取程序,是自动浏览互联网并收集信息的程序。在Java中实现这样的功能,需要掌握一系列的...

    网络机器人Java编程指南.pdf

    6. **爬虫框架**:除了基本的编程技巧,高级话题可能包括使用Scrapy-Java或其他Java爬虫框架,如WebMagic,这些框架提供了一套完整的解决方案,使开发更加便捷。 7. **反爬策略与IP代理**:面对网站的反爬机制,如...

Global site tag (gtag.js) - Google Analytics