java抓取网页内容(前两天想写一段自动提取微博状态的代码,可以用PHP写 )

优采云 发布时间: 2022-01-18 00:11

  java抓取网页内容(前两天想写一段自动提取微博状态的代码,可以用PHP写

)

  前两天想写一个自动提取微博状态的代码。据我所知,实现这个功能可以用PHP写,也可以用Java写。我觉得用Java写和调试比较容易,PHP脚本需要上传到服务器什么的。

  代码很简单,创建一个包的URL类的对象,用这个URL作为写作源,将内容保存在一个字符串中。然后创建一个新文件并写出字符串。但是请注意,不同的 网站 使用不同的代码字。现在大多数 网站 使用 utf-8 字符编码,而基于 wordpress 的 网站 使用这种编码。但是很多中文网站,包括网易网站等门户网站,仍然使用gb2312编码。一方面,gb2312的历史比utf-8要长。早期中文网站是用gb2312构建的,现在修改工作量太大;-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();

}

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线