`
xyliufeng
  • 浏览: 87251 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 抓取网站内容例子2

 
阅读更多
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;


public class h2 {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws HttpException 
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws HttpException, IOException, InterruptedException 
	{
		 // TODO Auto-generated method stub
		 System.setProperty( "org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog" );
		
		/* HttpClient httpClient = new HttpClient();
		 //创建GET方法的实例
		   GetMethod getMethod = new GetMethod("http://www.dianping.com/search/category/1/10/g0r0");
		  
		  //使用系统提供的默认的恢复策略
		  getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
		 
		  getMethod.setRequestHeader( "User-Agent", "ie"); 
		  //getMethod.setRequestHeader( "Accept-Charset", "UTF-8"); 
		  
		  int statusCode = httpClient.executeMethod(getMethod);
		   if (statusCode != HttpStatus.SC_OK) 
		   {
		    System.err.println("Method failed: "+ getMethod.getStatusLine());		      
		   }
		   //读取内容 
		  // byte[] responseBody = getMethod.getResponseBody();
		   //处理内容
		   //System.out.println(new String(responseBody));
		   
		   String s =getMethod.getResponseBodyAsString();
		  // System.out.println(s);
		   //<li class="shopname"><a href="/shop/3990805" class="BL"  title="宝岛新乐园美食总汇" onclick="pageTracker._trackPageview('dp_search_shopname_shanghai');">宝岛新乐园美食总汇</a></li>
		   String regx1="(\\d{1,10})";
		  // String regx2="([\u4E00-\u9FA5]+)";
		  _L1:
		  {	  
		  String regx2="<a href=\"(\\/shop/\\d{1,10})\" class=\"BL\".+?>(.+?)</a>";
		   Pattern pattern3 = Pattern.compile(regx2);
		   Matcher matcher3 = pattern3.matcher(s);
		   System.out.println(matcher3.groupCount());
		   
		   int g[] = null;
		   ArrayList List = new ArrayList();
		   int i =0;
		   while(matcher3.find()) 
		   {
		    
			 System.out.println(i+"-URL:"+matcher3.group(1));		    
			 System.out.println(" "+matcher3.group(2));		    
			 //List.add(matcher3.group()) ;	     
		      i++;
		   }
		  }
		   System.out.println("=====================================");
		  
		   //next
		   //<a href="/search/category/1/10/g10p4/g10" class="NextPage" title="下一页">下一页</a>
		   String regx5="<a href=\"(/search/category/\\d{1,3}/\\d{1,10}/g\\d{1,5}p\\d{1,3}/g\\d{1,3})\" class=\"NextPage\".+?>(.+?)</a>";
		   Pattern pattern5 = Pattern.compile(regx5);
		   Matcher matcher5 = pattern5.matcher(s);
		   System.out.println(matcher5.find());
		   System.out.println(matcher5.groupCount());
		   System.out.println(matcher5.group());
		   System.out.println(matcher5.group(1));
		   System.out.println(matcher5.group(2));	*/	   
		  
		   //list
		   /*for(int y=0;y<List.size();y++)
		   {
			   //System.out.println("list:"+List.get(y));
		   }*/
		  /* System.out.println("=================================");
		   Iterator  it=  List.iterator();
		   while(it.hasNext())
		   {
			   System.out.println("list:"+it.next());
		   }*/
		 h2 hx = new h2();
		 String url ="http://www.dianping.com/search/category/1/10/g0r0";
		 StringBuffer s = hx.getData(url);
		// System.out.println(s);
		 StringBuffer s2 = new StringBuffer("aa");
		 String page ="";
		 int c=0;
		 while(true)
		 //for(int i=0;i<100;i++) 
		 {
			if(!url.equals(""))				
			{
				 hx.printShoplist(s);
				 url = hx.getNext(s);
				 s = hx.getData("http://www.dianping.com"+url);			
				 System.out.println(url);
				// System.out.println(hx.getData(page));
				 c++;
				 //Thread.sleep(1000);
				 System.out.println("count:"+c);
			}else{			 
				System.out.println("工作结束!");
				break;
			}
		 }
		 
		
	}
	
	
	HttpClient httpClient;
	
	public h2()
	{
		 httpClient = new HttpClient();
	}
	//取得页面数据
	public StringBuffer getData(String url) throws IOException
	{
		 //创建GET方法的实例
		   GetMethod getMethod = new GetMethod(url);
		  
		  //使用系统提供的默认的恢复策略
		  getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
		 
		  getMethod.setRequestHeader( "User-Agent", "oprea"); 
		  //getMethod.setRequestHeader( "Accept-Charset", "UTF-8"); 
		  //getMethod.addRequestHeader("referer","a.jsp"); //就这行就好
		  getMethod.setRequestHeader("REMOTE_ADDR", "114.80.166.161");
		  int statusCode = 0;
		try {
			statusCode = httpClient.executeMethod(getMethod);
		} catch (HttpException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		   if (statusCode != HttpStatus.SC_OK) 
		   {
		    System.err.println("Method failed: "+ getMethod.getStatusLine());		      
		   }
		   //读取内容 
		  // byte[] responseBody = getMethod.getResponseBody();
		   //处理内容
		   //System.out.println(new String(responseBody));
		   
		   StringBuffer s =new StringBuffer(getMethod.getResponseBodyAsString());
		   
		   return s;
		
	}
	//取得页面列表数据
	public void printShoplist(StringBuffer s)
	{
		String regx2="<a href=\"(\\/shop/\\d{1,10})\" class=\"BL\".+?>(.+?)</a>";
		   Pattern pattern3 = Pattern.compile(regx2);
		   Matcher matcher3 = pattern3.matcher(s);
		   System.out.println(matcher3.groupCount());
		   
		   int g[] = null;
		   ArrayList List = new ArrayList();
		  int i =0;
		   while(matcher3.find()) 
		   {
		    
			 System.out.println(i+"-URL:"+matcher3.group(1));		    
			 System.out.println(" "+matcher3.group(2));		    
			 //List.add(matcher3.group()) ;	     
		      i++;
		   }
	}
	//取得下一页的地址
	public String getNext(StringBuffer s)
	{
		 String regx5="<a href=\"(/search/category/\\d{1,3}/\\d{1,10}/g\\d{1,5}p\\d{1,3}/g\\d{1,3})\" class=\"NextPage\".+?>(.+?)</a>";
		   Pattern pattern5 = Pattern.compile(regx5);
		   Matcher matcher5 = pattern5.matcher(s);
		  /* System.out.println(matcher5.find());
		   System.out.println(matcher5.groupCount());
		   System.out.println(matcher5.group());
		   System.out.println(matcher5.group(1));
		   System.out.println(matcher5.group(2));	*/
		   if(matcher5.find())
		   {
			   return matcher5.group(1);
		   }else{
			   return "";
		   }
	}

}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java抓取网页数据Demo

    抓取原网页适用于静态内容,而处理JavaScript返回数据则针对动态交互的网站。在实际项目中,根据目标网页的特点和需求,灵活运用这些方法是关键。 在提供的`WebpageCaptureDemo`压缩包文件中,可能包含了实现以上...

    java抓取网页内容--生成静态页面

    在Java编程中,生成静态页面是一种常见的技术,它涉及到网页内容的抓取和存储。这个程序的主要目的是从指定的URL抓取网页内容,并将其保存为一个HTML文件,即静态页面。下面将详细讲解这个过程涉及的关键知识点。 1...

    java根据json规则抓取(新浪新闻、百度新闻、微博动态)的网页内容源码

    java根据自定义json格式规则抓取新浪新闻、百度新闻、微博动态内容的网络爬虫源码 例子中的源码功能: 导入Hbase的jar包即可直接返回Put对象数据、可以返回map对象数据、支持自定义json格式抓取指定网页的内容、抓取...

    java课程设计java jsoup 爬取1688网站信息,详细例子

    2. **连接网页**:使用Jsoup的`connect()`方法建立与1688网站的连接。通过`get()`或`post()`方法发送HTTP请求,获取HTML响应。 3. **解析HTML**:使用`parse()`方法将返回的HTML内容解析成Document对象,然后可以...

    java抓取网页数据实现

    下面是一个简单的Java抓取网页数据的例子: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.IOException; public class WebScraper { public static void main(String[] args...

    java利用htmlparser抓取网页数据

    在这个例子中,我们创建了一个`Parser`对象,传入要抓取的网页URL。然后通过`elements()`方法获取一个迭代器,遍历HTML中的所有节点。当找到`&lt;title&gt;`标签时,我们提取并打印出网页的标题。 HTMLParser库还支持更...

    java爬虫抓取图片

    Java爬虫技术是一种用于自动化网页数据抓取的编程方法,尤其在处理图片抓取时,它可以帮助我们批量下载网络上的图像资源。对于新手来说,掌握Java爬虫抓取图片的基本步骤和技巧是十分有益的。 首先,我们需要了解...

    爬虫搜索,简单的搜索引擎,java爬虫,搜索引擎例子,爬虫demo,java实现互联网内容抓取,搜索引擎大揭密

    在这个"搜索引擎大揭密"中,我们将关注如何用Java实现互联网内容抓取。Java爬虫程序通常会利用HttpURLConnection或HttpClient等类库来发送HTTP请求,获取网页HTML内容。接着,使用Jsoup或BeautifulSoup等解析库解析...

    HtmlPage 爬虫 抓取网页新闻例子

    标签“爬虫 抓取新闻 网页新闻例子”进一步确认了这个示例是关于抓取网页新闻的,因此我们可以期待代码示例包括了如何定位和抓取新闻内容的具体细节。 至于压缩包内的“爬虫”文件,可能是包含整个项目源码的文件夹...

    java http方式抓取网页信息 JAVAIO

    以下是一个基本示例,展示如何通过GET方法抓取网页内容: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class ...

    Java爬虫小例子,爬取小网站,突破防盗链下载图片

    这个"Java爬虫小例子"项目展示了如何利用Java来爬取小型网站,特别是那些有防盗链保护的图片资源。防盗链是网站为了防止其他网站直接引用其服务器上的资源而采取的一种防护措施。下面我们将深入探讨相关的知识点。 ...

    网页抓取例子

    在本例中,我们关注的标题是“网页抓取例子”,这表明我们将探讨如何实现一个简单的网页抓取程序。描述部分虽然为空,但我们可以从提供的博文链接(https://guoyiqi.iteye.com/blog/735515)中获取更多信息,它可能...

    百度推广抓取API例子

    本篇文章将围绕"百度推广抓取API例子"这一主题,深入探讨相关知识点。 首先,API(Application Programming Interface)是软件之间交互的一种方式,它允许开发者通过调用特定的接口函数来获取或操作数据。百度推广...

    Java验证码识别的例子

    这个Java验证码识别的例子提供了一个实战教程,让我们深入了解验证码识别的原理与实现方法。 验证码(CAPTCHA)的主要目的是防止自动化的机器人程序对网站进行恶意操作,例如批量注册、刷票等。而验证码识别技术则...

    基于java语言的bt网页内容爬虫程序例子

    本示例项目“基于Java语言的BT网页内容爬虫程序”提供了如何使用Java进行网页抓取的具体实践,这对于数据分析、网站监控或者信息检索等场景都非常有价值。下面将详细介绍这个项目的相关知识点。 首先,我们需要理解...

    新版本抓取豆瓣图书_java_

    总的来说,"新版本抓取豆瓣图书_java_"项目涵盖了Java网络编程、HTML/JSON解析、并发处理、反爬策略、数据存储等多个方面的知识点,是学习和实践Web爬虫技术的好例子。通过这个项目,开发者可以提升自己在这些领域的...

    WebMagic(Java)简单爬虫实现,实现抓取数据,并导出到excel文件

    `Seeder`负责提供初始的URL,`Downloader`用于下载网页内容,`PageProcessor`解析并提取所需数据,最后`Pipeline`处理并存储抓取的数据。 1. **安装与配置WebMagic**: 在Java项目中,你可以通过Maven或Gradle将...

    java多线程抓取图片

    1. **基础多线程爬虫**:这个例子可能展示了如何创建基本的Java Thread对象,为每个图片URL启动一个新的线程进行下载。 2. **线程池爬虫**:使用线程池来管理下载线程,可能包括设置核心线程数、最大线程数、线程...

    Java爬虫信息抓取共14页.pdf.zip

    【标题】"Java爬虫信息抓取共14页.pdf.zip"揭示了这是一份关于使用Java编程语言进行网络爬虫技术的教程,总计14个页面,且内容被压缩在了一个PDF文档中。这份教程可能涵盖了从基础知识到实战应用的各种主题,帮助...

    java-swing-通过ip获取网站信息(网页抓取)

    通过学习这个例子,你可以了解到如何结合Java Swing和网络编程进行简单的网页抓取。记住,实际的网页抓取可能涉及更复杂的逻辑,如处理cookies、session、登录验证,以及更高级的解析技术,例如XPath或CSS选择器。

Global site tag (gtag.js) - Google Analytics