HttpClient+Jsoup 抓取网页信息(网易贵金属为例)
废话不多说直接讲讲今天要做的事。
利用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 抓取网页信息(网易贵金属为例)的更多相关文章
- jsoup抓取网页+具体解说
jsoup抓取网页+具体解说 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目.我以前在 IBM DW 上发表过两篇关于 htmlparser 的文章.各自 ...
- Jsoup抓取网页数据完成一个简易的Android新闻APP
前言:作为一个篮球迷,每天必刷NBA新闻.用了那么多新闻APP,就想自己能不能也做个简易的新闻APP.于是便使用Jsoup抓取了虎扑NBA新闻的数据,完成了一个简易的新闻APP.虽然没什么技术含量,但 ...
- .net抓取网页信息 - Jumony框架使用1
往往在实际开发中,经常会用到一些如抓取网站信息之类的的操作,往往大家采用的是用一些正则的方式获取,但是有时候正则是很死板的,我们常常试想能不能使用jquery的选择器,获取符合自己要求的元素,然后进行 ...
- 使用jsoup抓取新闻信息
1,jsoup简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和 ...
- Powershell抓取网页信息
一般经常使用invoke-restmethod和invoke-webrequest这两个命令来获取网页信息,如果对象格式是json或者xml会更容易 1.invoke-restmethod 我们可以用 ...
- 一、使用 BeautifulSoup抓取网页信息信息
一.解析网页信息 from bs4 import BeautifulSoup with open('C:/Users/michael/Desktop/Plan-for-combating-master ...
- httpclient在抓取网页时出现速度慢的情况分析
问题: 最近在使用httpclient3.0 来做项目,在一台机器部署系统后,发现此机器比其它机器在抓取页面的速度上慢了大概4s,左右. 项目是部署在局域内网,所以代码中都是直接写的IP地址 .在使用 ...
- C# 使用HtmlAgilityPack抓取网页信息
前几天看到一篇博文:C# 爬虫 抓取小说 博主使用的是正则表达式获取小说的名字.目录以及内容. 下面使用HtmlAgilityPack来改写原博主的代码 在使用HtmlAgilityPack之前,可以 ...
- shell脚本抓取网页信息
利用shell脚本分析网站数据 # define url time=$(date +%F) mtime=$(date +%T) file=/abc/shell/abc/abc_$time.log ht ...
随机推荐
- 开始奇妙的DP之旅
铭记各位大佬教导,开始看一些很迷的动态规划,那就从比较典型的01背包开始吧,想想还是从比较简单的导弹拦截开始吧,说简单都是骗人的,还是看采药吧. 一.动态规划 刚听到动态规划这个东西,据HLT大佬所言 ...
- php中print_r、var_dump和var_export几个函数的用法区别
php中print_r.var_dump和var_export几个函数的用法区别
- CSS预处理语言——less与sass的使用
我们一般所使用的Less跟Sass一般是将其编译成我们所熟悉的CSS再导入使用,当然不经编译,直接在浏览器使用 我是习惯用Koala来进行编译,简单智能方便,Hbuilder也自带编译功能,不过要手动 ...
- nginx与apache配合反向代理技术2
注意,上次我们只是简单的在同一台服务器模拟搭建了一个新的http服务器(启用了8080端口),使用的是apache,从而模拟了多台服务器实现的Nginx反向代理,通过Nginx向上游代理服务器发送请求 ...
- 被低估的选手 - JavaFx
被低估的选手 - JavaFx 1.MFC(Visual C++) 个人不是很喜欢这个框架,太多系统定义的东西,就像无底洞,学都学不完,这个东西需要你有比较强的记忆力,并且能融会贯通里面很多预定义的功 ...
- 我的开发环境搭建(ubuntu菜鸟)
前段时间把系统换成了ubuntu,经过一段时间到发展,终于可以比较正常到完成开发工作了,但是就在今天,我的系统崩了,进不了桌面,而且终端里边到中文也显示乱码,尝试了网上说到各种方法无效,最终我决定重装 ...
- 使用java API操作HDFS-相关环境的设置
用于装在编译类,即为hadoop的类路径 退出后重新登录,再使用env检查. jps可以直接使用了,表示已经设置成功. 在myclass之中创建类文件,这个myclass目录是自己创建的.
- 在iOS应用程序中使用Frida绕过越狱检测
阿里聚安全在之前的三篇博客中介绍了利用Frida攻击Android应用程序,整个过程仿佛让开发者开启上帝视角,在本篇博客中,我们将会介绍在iOS应用程序中使用Frida绕过越狱检测.即使 ...
- Java过滤敏感词语/词汇---DFA算法
最近网站需要在评论.投稿等地方过滤敏感词汇,于是在网上查找了相关教程,特此整理分享. 关于DFA算法,详细的可以去http://blog.csdn.net/u013378306/article/det ...
- Java迭代器Iterator
之前我们实现了迭代器模式,很多编程语言实际上已经内置了迭代器类,比如Java就为我们实现了迭代器Iterator.我们首先来看Iterator中的源码. 通过JDK源码我们发现Iterator是一个接 ...