Java实现简单网页抓取
需求说明:使用Java抓取网页信息,并以字符串的形式返回。
使用Java代码实现:
- package net.ibuluo.spider.util;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.Reader;
- import java.net.MalformedURLException;
- import java.net.URL;
- /**
- * Http工具
- * @author robin zhang
- *
- */
- public class HttpUtil {
- /**
- * 根据网址抓取网页信息并将之以字符串的形式返回
- * @param urlStr
- * 网址字符串
- * @return
- * @throws MalformedURLException
- */
- public static String getUrl(String urlStr) {
- String result = null;
- try{
- URL url = new URL(urlStr);
- result = inputStream2String(url.openStream());
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return result;
- }
- /**
- * 读取字节流中的信息,并转为字符串
- * @param inputStream
- * 要读取的字节流
- * @return
- * @throws IOException
- */
- private static String inputStream2String(InputStream inputStream)
- throws IOException{
- Reader reader = null;
- StringBuilder builder = null;
- try{
- //将字节流转为字符流
- reader = new InputStreamReader(inputStream);
- //创建字符串容器
- builder = new StringBuilder();
- //设置字符流读取长度
- char[] buffer = new char[1024];
- //记录每次读取的长度,主要是为记录最后一次读取的长度
- int offset = 0;
- while((offset=reader.read(buffer)) > 0){
- //将读取的内容转为字符串并放入builder中
- builder.append( new String(buffer, 0, offset) );
- }
- return builder.toString();
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- if(null != reader){
- reader.close();
- }
- }
- return null;
- }
- public static void main(String[] args){
- System.out.println( getUrl("http://www.ibuluo.net/") );
- }
- }
以上的内容可以使用一个第三方插件JSoup实现。使用jsoup实现代码如下:
- try {
- Document doc = Jsoup.connect("http://www.baidu.com/").get();
- System.out.println(doc.html());
- } catch (IOException e) {
- e.printStackTrace();
- }
Jsoup更多的用处是在实现html文档的分析上。可以参考Jsoup官方网站。
Java实现简单网页抓取的更多相关文章
- 【apache】使用HttpClient,进行简单网页抓取
1 package com.lw.httpclient.test; 2 import org.apache.http.client.methods.CloseableHttpResponse; 3 i ...
- java网页抓取
网页抓取就是,我们想要从别人的网站上得到我们想要的,也算是窃取了,有的网站就对这个网页抓取就做了限制,比如百度 直接进入正题 //要抓取的网页地址 String urlStr = "http ...
- Java实现网页抓取的一个Demo
这个小案例的话我是存放在我的github 上. 下面给出链接自己可以去看下,也可以直接下载源码.有具体的说明 <Java网页抓取>
- Python实现简单的网页抓取
现在开源的网页抓取程序有很多,各种语言应有尽有. 这里分享一下Python从零开始的网页抓取过程 第一步:安装Python 点击下载适合的版本https://www.python.org/ 我这里选择 ...
- Java开源网页抓取工具httpClient以及jsoup
网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据
- 网页抓取:PHP实现网页爬虫方式小结
来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...
- 基于Casperjs的网页抓取技术【抓取豆瓣信息网络爬虫实战示例】
CasperJS is a navigation scripting & testing utility for the PhantomJS (WebKit) and SlimerJS (Ge ...
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取
区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...
- Python爬虫之三种网页抓取方法性能比较
下面我们将介绍三种抓取网页数据的方法,首先是正则表达式,然后是流行的 BeautifulSoup 模块,最后是强大的 lxml 模块. 1. 正则表达式 如果你对正则表达式还不熟悉,或是需要一些提 ...
随机推荐
- Linux ssh其他服务器
- Java日期类:Date和Calendar的使用
总是使用这两个类,总是需要百度.还不如一次全部整理完. 一.介绍: Date 类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年 ...
- ASP.Net请求处理机制初步探索之旅 - Part 3 管道(转)
开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest().HttpRuntime.ProcessReq ...
- 学习使用turtlebot2——调试Hokuyo激光雷达(型号UST-10LX)
目标 在ROS上调试使用Hokuyo激光雷达传感器 配置情况 电脑使用Ubuntu 14.04版本,ROS为 Indigo,激光雷达为Hokuyo(型号UST-10LX,网口型接口) 如果 ...
- 巨蟒python全栈开发-第4天 列表&元组&range
今日内容大纲 1. 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操 ...
- poj 1182 食物链 (带关系的并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44835 Accepted: 13069 Description 动 ...
- <2014 04 29> c/c++常用库总结
C 标准库 ============================================================================================== ...
- python split(),os.path.split()和os.path.splitext()函数用法
https://blog.csdn.net/T1243_3/article/details/80170006 # -*- coding:utf-8 -*- """ @ ...
- Python(数据库安装与基本语句)
一.数据库相关概念 1.两种硬件扩展方式 a.垂直扩展:针对一台计算机 b.水平扩展:多台普通计算机 2.数据库相关概念 数据库服务器(本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端) ...
- 解决Object() takes on paramenters的问题
先贴上今天的代码: 解决:是由于父类中的_init_()写成了_int_(),由于粗心导致,下次注意.