最近在做全文检索。所以数据很纠结。没办法 抓一些行业新闻。于是乎用了 httpclient
上代码。分享下
TEbInformationModel model = new TEbInformationModel();
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);
httpclient.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);
httpclient.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);
httpclient.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET,HTTP.UTF_8);
httpclient.getParams().setParameter(HTTP.CONTENT_TYPE, HTTP.UTF_8);
HttpPost httppost = new HttpPost(httpurl);
httppost.setHeader("Accept-Language", "zh-cn,zh;q=0.5");
httppost.setHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7");
httppost.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);
httppost.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);
httppost.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);
httppost.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET, HTTP.UTF_8);
httppost.getParams().setParameter(HTTP.CONTENT_TYPE, HTTP.UTF_8);
HttpResponse response = httpclient.execute(httppost);
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"GBK"));
StringBuffer sbf = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null)
{
sbf.append(line);
}
/** 回收资源 */
br.close();
String title = getSubTitle(getStringNoBlank(getTitle(sbf.toString(),"title")));
String context = getSubContext(getStringNoBlank(getTitle(sbf.toString(),"content")));
String key = getSubKey(getStringNoBlank(getTitle(sbf.toString(),"key")));
System.out.println("标题:"+title);
System.out.println("内容:"+context);
System.out.println("关键字:"+key);
正则匹配的部分
private String getStringNoBlank(String str) {
if(str!=null && !"".equals(str)) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
String strNoBlank = m.replaceAll("");
return strNoBlank;
}else {
return str;
}
}
public String getSubTitle(String str){
return str.substring(str.indexOf("<h1>")+4, str.lastIndexOf("</h1>"));
}
public String getSubContext(String str){
return str.substring(str.indexOf("<P>")+3, str.lastIndexOf("</P>"));
}
public String getSubKey(String str){
return str.substring(str.indexOf("</b>")+4, str.lastIndexOf("</p>"));
}
private String getTitle( String s,String type)
{
String regex = null;
String title = "";
final List<String> list = new ArrayList<String>();
if("title".equals(type)){
regex = "<div class=\"zz_leftneirong1\">.*?</h1>";
}else if("content".equals(type)){
regex = "<div class=\"zz_leftneirong4\" id=\"content\" name=\"content\">.*? </div>";
}else{
regex = " <p class=\"key\"><b>本文关键词:</b>.*?</p>";
}
final Pattern pa = Pattern.compile(regex, Pattern.CANON_EQ);
final Matcher ma = pa.matcher(s);
while (ma.find())
{
list.add(ma.group());
}
for (int i = 0; i < list.size(); i++)
{
title = title + list.get(i);
}
return title;
}
分享到:
相关推荐
HttpClient抓取网页Demo,HttpClient 的入门示例,配合blog文章的附件
httpclient远程网页抓取工具,可以继承到web项目工程中,很好哟,还等什么?
httpClient+jsoup抓取网页数据实例和jar包
HttpClient网页抓取工具包整合,
利用httpClient+jsoup技术进行网页数据的获取,以网易贵金属为例~
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)
将网页抓取成图片格式的VB.NET程序,可指定网址打开网页后自动抓取网页为图片文件,并保存成指定格式,生成自定义大小的缩略图,自定义图片大小,甚至还可以设置水印文字。
针对 httpclient4.* 绕验证码获取公司信息 包括 jsoup网页信息的爬虫及htmlUnit对动态网站信息的抓取
重新封装的HttpClient类 用于网页抓取的朋友们可以留着,还算比较完善!
NULL 博文链接:https://houyajie.iteye.com/blog/2433840
利用HttpClient抓取网页中简单的数据,数据可存入数据库进行分析
网页抓取httpcore-4.1.2.jar包
包含jar包commons-logging,httpclient-4.1.2.jar,httpcore-4.2.1.jar main类文件,文档,源码
本篇文章主要介绍了Java两种方式简单实现:爬取网页并且保存 ,主要用UrlConnection、HttpClient爬取实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
本文研究了 HttpClient、HTMLParser 等技术,提出并实现了一种基于HttpClient 与HTMLParser 的网 页抓取解析方法,该方法能够快速有效对HTML 页面进行抓取解析
httpClient 中文指导手册 教你如何用登录 如何抓取网页等
网页抓取提供一个API,该API返回给定的公共Github存储库的所有文件的行总数和字节总数(按文件扩展名分组)。 无需使用Github的API或Web抓取库,就可以使用纯Web抓取技术来检索数据。玩GET url :公共GitHub存储库,...
主要介绍了Java爬虫Jsoup+httpclient获取动态生成的数据的相关资料,需要的朋友可以参考下
两种常用抓取网页的jar httpClient和jsonp