废话不多说直接讲讲今天要做的事。

利用HttpClient和Jsoup技术抓取网页信息。HttpClient是支持HTTP协议的客户端编程工具包,并且它支持HTTP协议。

jsoup 是一款基于 Java 平台的 网页html解析器,可直接解析某个 URL 地址、HTML 文本内容,提供了一套非常方便的 API接口,通过类似于 jQuery 的操作方法来操作数据。

httpClient相关文档:http://hc.apache.org/httpcomponents-client-5.0.x/index.html

jsoup相关文档:http://jsoup.org/

此处以网易贵金属资讯为例进行案例教学 O(∩_∩)O

然后我们首先要分析网页源代码的结构

之后我们就可以开始进行编程了,首先我们要知道利用httpClient的流程:

  1. 创建HttpClient的对象;

  2. 创建请求方法的实例,并指定访问的URL;

  3. 调用HttpClient对象发送请求,该方法返回一个HttpResponse,要判断responce.getStatusLine().getStatusCode()的返回码是否为200;

  4. 调用HttpResponse相关方法获取相应内容;

  5. 释放连接。

当然啦 创建项目的时候要导入相关的jar包,本文会提供源码+jar包http://pan.baidu.com/s/1sl55d85

StockUtils.java

 package cn.clay.httpclient.utils;

 import java.io.IOException;

 import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
/**
* 传递网页链接
* 返回网页源码
* @author ClayZhang
*
*/
public class StockUtils {
//第一次获取网页源码
public static String getHtmlByUrl(String url) throws IOException{
String html = null;
CloseableHttpClient httpClient = HttpClients.createDefault();//创建httpClient对象
HttpGet httpget = new HttpGet(url);
try {
HttpResponse responce = httpClient.execute(httpget);
int resStatu = responce.getStatusLine().getStatusCode();
if (resStatu == HttpStatus.SC_OK) { HttpEntity entity = responce.getEntity();
if (entity != null) {
html = EntityUtils.toString(entity);//获得html源代码
}
}
} catch (Exception e) {
System.out.println("访问【"+url+"】出现异常!");
e.printStackTrace();
} finally {
//释放连接
httpClient.close();
}
return html;
}
}

然后利用jsoup的方法进行测试类的编写StockTest.java

 package cn.clay.httpclient.utils.test;

 import java.io.IOException;

 import org.apache.http.ParseException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import cn.clay.httpclient.utils.StockUtils; /**
*
* @author ClayZhang
*
*/
public class StockTest { public static void main(String[] args) throws ParseException, IOException {
String content = StockUtils.getHtmlByUrl(
"http://fa.163.com/zx/gjs/1/");
parserHtml(content);
} public static void parserHtml(String content) throws ParseException, IOException {
Document doc = Jsoup.parse(content);
Elements links = doc.getElementsByClass("g-news").select("dl");
for (Element e : links) {
System.out.println("新闻标题:" + e.select("a").text().toString());
//获取页面链接
Elements linkHref = e.select("a");
//截取时间字符串
Elements timeStr = e.select("span[class=f-fr]");
//简略信息
Elements comment = e.select("span[class=f-fl f-ofe u-digest]");
System.out.println("新闻链接:" + linkHref.attr("href"));
System.out.println("发布时间:" + timeStr.text());
System.out.println("简要信息:" + comment.text().toString()); System.out.println("=============================================================");
} }
}

运行之后的效果如下

本文版权归作者及博客园所有,转载请注明作者及原文出处

http://www.cnblogs.com/clayzhang

HttpClient+Jsoup 抓取网页信息(网易贵金属为例)的更多相关文章

  1. jsoup抓取网页+具体解说

    jsoup抓取网页+具体解说 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目.我以前在 IBM DW 上发表过两篇关于 htmlparser 的文章.各自 ...

  2. Jsoup抓取网页数据完成一个简易的Android新闻APP

    前言:作为一个篮球迷,每天必刷NBA新闻.用了那么多新闻APP,就想自己能不能也做个简易的新闻APP.于是便使用Jsoup抓取了虎扑NBA新闻的数据,完成了一个简易的新闻APP.虽然没什么技术含量,但 ...

  3. .net抓取网页信息 - Jumony框架使用1

    往往在实际开发中,经常会用到一些如抓取网站信息之类的的操作,往往大家采用的是用一些正则的方式获取,但是有时候正则是很死板的,我们常常试想能不能使用jquery的选择器,获取符合自己要求的元素,然后进行 ...

  4. 使用jsoup抓取新闻信息

    1,jsoup简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和 ...

  5. Powershell抓取网页信息

    一般经常使用invoke-restmethod和invoke-webrequest这两个命令来获取网页信息,如果对象格式是json或者xml会更容易 1.invoke-restmethod 我们可以用 ...

  6. 一、使用 BeautifulSoup抓取网页信息信息

    一.解析网页信息 from bs4 import BeautifulSoup with open('C:/Users/michael/Desktop/Plan-for-combating-master ...

  7. httpclient在抓取网页时出现速度慢的情况分析

    问题: 最近在使用httpclient3.0 来做项目,在一台机器部署系统后,发现此机器比其它机器在抓取页面的速度上慢了大概4s,左右. 项目是部署在局域内网,所以代码中都是直接写的IP地址 .在使用 ...

  8. C# 使用HtmlAgilityPack抓取网页信息

    前几天看到一篇博文:C# 爬虫 抓取小说 博主使用的是正则表达式获取小说的名字.目录以及内容. 下面使用HtmlAgilityPack来改写原博主的代码 在使用HtmlAgilityPack之前,可以 ...

  9. shell脚本抓取网页信息

    利用shell脚本分析网站数据 # define url time=$(date +%F) mtime=$(date +%T) file=/abc/shell/abc/abc_$time.log ht ...

随机推荐

  1. Python中的支持向量机SVM的使用(有实例)

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn也集成了SVM算法. 一.简要介绍一下sklearn Scik ...

  2. [CTSC1999]【网络流24题】星际转移

    Description 由于人类对自然资源的消耗,人们意识到大约在2300 年之后,地球就不能再居住了.于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177 年冬由于未知的原因,地 ...

  3. jquery 模态窗口 蒙层无法覆盖flash解决办法

    在应用swf的<object></object>标签中加入如下属性: <param name="wmode" value="transpar ...

  4. 实现图片的循环滚动——JS的简单应用

    首先默认都了解JS的循环分支运算符等基本语法 用CSS实现简单的布局也是会的. 然后我们就可以来了解一下 [DOM 树节点] 它分为三大类:元素节点.文本节点.属性节点 文本节点跟属性节点为元素节点的 ...

  5. 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10的100次幂。 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。 输入样例: 1234567890987654321123456789 输出样例: yi san wu

    这是PAT中的一道练习题 刚开始的时候我想着直接定义正整数n,结果走了很大的弯路,因为题目中要求n小于10的100次幂,即最大的正整数n有100位,而C语言中整型数字最大占8个字节的存储空间,如果按无 ...

  6. Python 基础之 异常处理

    python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理?  先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...

  7. java局部/成员/静态/实例变量

    局部变量和成员变量主要是他们作用域的区别成员变量个是类内部:局部变量是定义其的方法体内部(或者方法体内部的某一程序块内——大括号,主要看定义的位置).另外,成员变量可以不显式初始化,它们可以由系统设定 ...

  8. opencv探索之路(一):win10 X64+VS2015+opencv3.10安装教程

    我的电脑64位Win10系统,现在利用VS2015安装opencv3.10.安装之路颇为艰辛,从一开始的VS2015的安装,到opencv的安装,都充满挑战,历经千辛万苦终于把opencv开发环境搭建 ...

  9. 从JVM角度看Java多态

    首先,明确一下,Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 package test.xing; class Father{ prot ...

  10. 自己写的书《深入理解Android虚拟机内存管理》,不出版只是写着玩

    百度网盘地址:https://pan.baidu.com/s/1jI4xZgE 我给起的书名叫做<深入理解Android虚拟机内存管理>.本书分为两个部分,前半部分主要是我对Linux0. ...