`
leeny
  • 浏览: 20068 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

httpclient抓取数据

阅读更多
    今天下午闲来无事,就在iteye上泡着,看到了一篇关于用httpclient获取手机号归属地的一片博客。想到我正好需要一些职位名称,于是动手自己写了一个小程序来获取自己想要的数据。代码如下:
  public static void main(String[] args) {
	  String url = "http://sou.zhaopin.com/jobtypelist.html";	  
	  getHttpClient(url);
 }

	private static void getHttpClient(String url) {
		//构造HttpClient的实例
		HttpClient httpClient = new HttpClient();
		  //创建GET方法的实例
		  GetMethod getMethod = new GetMethod(url);
		  //使用系统提供的默认的恢复策略
		  getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
		    new DefaultHttpMethodRetryHandler());
		  try {
			   //执行getMethod
			   int statusCode = httpClient.executeMethod(getMethod);
			   if (statusCode != HttpStatus.SC_OK) {
			    System.err.println("Method failed: "
			      + getMethod.getStatusLine());
			   }
			   //读取内容 
			   byte[] responseBody = getMethod.getResponseBody();
			   //处理内容
			   parseHTML(new String(responseBody));
		  } catch (HttpException e) {
			   //发生致命的异常,可能是协议不对或者返回的内容有问题
			   System.out.println("Please check your provided http address!");
			   e.printStackTrace();
		  } catch (IOException e) {
			   //发生网络异常
			   e.printStackTrace();
		  } finally {
			   //释放连接
			   getMethod.releaseConnection();
		  }
	}
  
	private static void saveFile(String txt){
		String filePath = "F:/category.txt";
		BufferedWriter out = null;
		 if(txt != null){
			 try {  
	             out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath,true),"UTF-8")); 
	             //一行一行的写入
	             out.write(txt + "\t\n");
	             out.flush();  
	         }catch(Exception e){
	        	 e.printStackTrace();
	         } finally {  
	             if (out != null)
					try {
						out.close();
					} catch (IOException e) {
						e.printStackTrace();
					}  
	         }
		 }
	}

  private static void parseHTML(String content){
	 Document doc =  Jsoup.parse(content);
	 Elements categories = doc.select("li a");	 
	 for(int i=0; i<categories.size();i++){		 
		 String txt = categories.get(i).text();
		 saveFile(txt);
	}
  }

通过httpclient获得到页面的源代码之后,用Jsoup来解析html(这个是临时在网上查到的,不太会用),最后将数据保存到了文本中。
遇到的问题:
1.解析html,以前没有解析过,Jsoup也是临阵磨枪,得到了自己想要的结果还不错,下来再研究一下。
2.写入文件的时候,不能一行一行的写,没有想到用换行符,百度了一下。
分享到:
评论

相关推荐

    java httpclient 抓取 数据 和jar 包

    在本篇文章中,我们将深入探讨如何使用Java HttpClient来抓取网页数据以及如何打包成jar文件。 **一、Java HttpClient简介** Java HttpClient 是 Apache HttpClient 库的一部分,它提供了丰富的功能,包括连接管理...

    HttpClient抓取网页Demo

    在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 首先,你需要在项目中引入HttpClient的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    httpClient+jsoup抓取网页数据实例和jar包

    本教程将详细介绍如何结合使用HttpClient与Jsoup来抓取和处理网页数据。 HttpClient是Apache基金会开发的一个开放源代码库,它允许开发者发送HTTP请求并接收响应,支持多种HTTP协议版本。HttpClient提供了丰富的...

    httpclient抓取网页数据和所需的10个jar包

    使用HttpClient抓取网页数据的基本步骤如下: 1. **创建HttpClient对象**:首先,你需要创建一个HttpClient实例,这通常是通过`HttpClientBuilder`或`HttpClients`类完成的。 2. **构建HttpGet请求**:对于简单的...

    httpClient+jsoup 抓取网页数据

    总之,HttpClient和Jsoup是Java开发者进行网页数据抓取的强大工具。HttpClient提供可靠的HTTP通信,而Jsoup则简化了HTML解析和数据提取的过程。结合两者,你可以高效地从各种网页中获取你需要的信息。在实际项目中,...

    Java抓取https网页数据

    Java抓取https网页数据,解决peer not authenticated异常。导入eclipse就能运行,带有所用的jar包(commons-httpclient-3.1.jar,commons-logging.jar,httpclient-4.2.5.jar,httpcore-4.2.4.jar)

    HttpClient 登录163邮箱

    博文链接提供的源码可能展示了如何利用HttpClient库构造请求,发送登录数据,处理响应,以及如何解析返回的HTML内容来处理登录过程。 综上所述,HttpClient是一个强大的工具,可以用于登录163邮箱或其他需要HTTP...

    HttpClient网页抓取工具包整合

    - HttpClient常用于网页抓取,配合HTML解析库(如Jsoup)可以提取网页数据。 - 在自动化测试中,模拟用户请求以验证服务器端功能。 在实际使用中,HttpClient的灵活性和强大功能使其成为Java开发者的首选HTTP...

    java网页抓取数据

    Java网页抓取数据是互联网数据挖掘的一个重要领域,它允许开发者通过编程方式获取网页上的信息,从而实现自动化分析、监控或构建智能应用。在Java中,我们通常使用HTTP客户端库和HTML解析工具来实现这一目标。本文将...

    Java网页抓取数据

    Java网页抓取数据是互联网开发中的一个重要技能,它允许开发者从网页中提取所需的信息,如新闻、产品数据或用户评论,以供进一步分析或利用。本主题主要涵盖以下几个关键知识点: 1. **网络请求库**:在Java中,...

    爬数据案例 httpclient htmlparser

    在这个案例中,`httpclient`和`htmlparser`的结合使得我们可以高效地抓取和解析网页内容。需要注意的是,在实际爬虫项目中,还需要考虑异常处理、请求速率控制、反爬策略等问题,以确保爬虫的稳定性和效率。此外,...

    C# 多线程抓取数据(酒店)

    本项目以“C# 多线程抓取数据(酒店)”为主题,聚焦于利用C#语言实现多线程来高效地从艺龙酒店网站获取数据。下面将详细介绍相关知识点: 1. **C#多线程**:C#提供了多种方式创建和管理线程,包括`System.Threading....

    Java爬虫Jsoup+httpclient获取动态生成的数据

    在Web开发和数据抓取领域,Java爬虫技术是实现网页自动化信息提取的重要手段。本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据...

    C#抓取网页数据,彩票数据查询

    在本文中,我们将深入探讨如何使用C#语言来抓取网页数据,特别是在彩票数据查询方面的应用。C#是一种广泛用于开发Windows应用程序、Web服务以及游戏的面向对象的编程语言,其丰富的类库和强大的功能使其成为数据抓取...

    HttpClient 获取数据

    在实际应用中,HttpClient可以用于获取API数据、网页抓取、自动化测试等多种场景。为了确保数据安全,可能还需要处理HTTPS连接,验证服务器证书,或者使用HTTP基本认证、OAuth等身份验证机制。 总之,HttpClient是...

    httpclient绕过登陆验证码直接抓取内部数据

    HttpClient 绕过登录验证码直接抓取内部数据 HttpClient 的 Cookie 处理机制 在 web 安全中,Cookie 是一个非常重要的概念。它是服务器端用于标识用户身份的机制,通过 Cookie,服务器可以记住用户的登录信息,...

    asp.net 远程抓取数据生成静态页面Demo

    本教程将重点关注如何利用Asp.NET进行数据抓取并生成静态页面,这在提升网站性能、减轻服务器负担以及搜索引擎优化(SEO)等方面具有显著优势。 首先,我们来理解“数据抓取”这一概念。数据抓取是指从互联网上的...

    ASP.NET Core 抓取数据

    一旦我们有了HtmlDocument对象,就可以通过它的API来查询和抓取数据。例如,如果我们想抓取网页中的所有链接,可以这样做: ```csharp public List&lt;string&gt; ExtractLinks(HtmlDocument doc) { var links = new ...

    java抓取网页数据

    在抓取数据的过程中,我们还需要处理可能出现的反爬虫策略,比如验证码、IP限制、User-Agent检测等。有时,我们需要设置合适的User-Agent字符串,或者使用代理IP来绕过这些限制。 此外,为了确保爬虫的可扩展性和...

Global site tag (gtag.js) - Google Analytics