Java 抓取网页内容
2014-02-28 10:39
344 查看
前两天想写一段自动提取微博状态的代码。据我所知,实现这个功能即可以用PHP写,也可以用Java写。我认为用Java写调试方便一点,PHP的脚本还要上传到服务器什么的。
代码很简单的,新建一个java.net包的URL类的对象,以这个url做为写入源,内容保存在字符串中。然后新建一个文件,把字符串写出即可。不过要注意,不同网站使用不同的编码字。现在大多数的网站使用utf-8字符编码,基于wordpress搭建的网站都是使用这种编码字符的。但是,很多中文网站,包括网易等门户网站,还是使用gb2312编码。一方面gb2312的历史比utf-8要久一些,早期的中文网站以gb2312搭建,现在再修改工作量太大;另一方面,显示同样长度的文字内容,用gb2312编码比用utf-8编码要节省空间。真是因为有这个区别,所以输入网页html代码的时候要选择正确的读入方式。java的inputstream构造函数可以选utf-8作为一个参数传入,但是没有gb2312这个选项。所以抓取网易的网页时,保存下来的文档就会出现乱码。
另外,这个例子只是抓取静态的网页内容,对于微博的状态还是不行,因为要抓取状态就要先登录账号,这就要参考新浪的API文档。
代码很简单的,新建一个java.net包的URL类的对象,以这个url做为写入源,内容保存在字符串中。然后新建一个文件,把字符串写出即可。不过要注意,不同网站使用不同的编码字。现在大多数的网站使用utf-8字符编码,基于wordpress搭建的网站都是使用这种编码字符的。但是,很多中文网站,包括网易等门户网站,还是使用gb2312编码。一方面gb2312的历史比utf-8要久一些,早期的中文网站以gb2312搭建,现在再修改工作量太大;另一方面,显示同样长度的文字内容,用gb2312编码比用utf-8编码要节省空间。真是因为有这个区别,所以输入网页html代码的时候要选择正确的读入方式。java的inputstream构造函数可以选utf-8作为一个参数传入,但是没有gb2312这个选项。所以抓取网易的网页时,保存下来的文档就会出现乱码。
另外,这个例子只是抓取静态的网页内容,对于微博的状态还是不行,因为要抓取状态就要先登录账号,这就要参考新浪的API文档。
import java.beans.FeatureDescriptor; import java.io.*; import java.net.*; public class spider { /** * @param args */ public static String fetchWebpage(String urlname){ URL url; String s; StringBuffer sbuffer = new StringBuffer(); try{ url = new URL(urlname); // my website use utf-8, but some other websites, like 163 and baidu, use gb2312. InputStreamReader sreader = new InputStreamReader(url.openStream(),"utf-8"); BufferedReader breader = new BufferedReader(sreader); while((s=breader.readLine())!=null){ sbuffer.append(s); } breader.close(); }catch(Exception e){ e.printStackTrace(); } return sbuffer.toString(); } public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String address = "http://www.mr-naive.com"; FileOutputStream fos = new FileOutputStream(new File("myPage.html")); OutputStreamWriter oswrite = new OutputStreamWriter(fos, "utf-8"); BufferedWriter bwriter = new BufferedWriter(oswrite); bwriter.write(fetchWebpage(address)); bwriter.close(); } }
相关文章推荐
- java抓取网页信息内容
- JAVA常用整理(1)--通过java.net.URL类抓取某个网页的内容
- java-抓取指定URL网页的内容(二)
- java利用url实现网页内容的抓取
- Java 抓取网页内容,获取指定服务器IP
- 通过java.net.URL类抓取某个网页的内容
- java/android抓取网页(含js)内容…
- java利用url实现网页内容的抓取
- Java 抓取网页中的内容【持续更新】
- Java HttpURLConnection 抓取网页内容 解析gzip格式输入流数据并转换为String格式字符串
- Java 抓取网页内容,获取指定服务器IP
- java抓取全部网页内容
- 通过java.net.Socket 类抓取网页内容
- 通过java.net.URL类抓取某个网页的内容 选择自 cqq 的 Blog
- java抓取网页内容--生成静态页面
- java利用url实现网页内容的抓取
- 通过java.net.URL类抓取某个网页的内容
- Java网页抓取网页内容时,乱码问题的解决
- java抓取网页内容
- JAVA使用爬虫抓取网站网页内容的方法