日期:2014-05-20  浏览次数:20676 次

通过java.net.Socket类抓取网页内容
通过   java.net.Socket   类访问一个Web页面,并且返回结果

import   java.io.*;  
import   java.net.*;  

public   class   FirstSocket  
{  
public   static   void   main(String   args[])  
{  

//判断参数是否为两个,正确的用法为   FirstSocket   网站   页面  
if(args.length!=2)  
{  
System.out.println( "Usage   :   FirstSocket   host   page\r\nExample:FirstSocket   www.google.com   / ");  
System.exit(0);  
}  
String   strServer=args[0];   //取得第一个参数  
String   strPage   =   args[1];   //取得第二个参数  

try  
{  
String   hostname   =   strServer;  
int   port   =   80;  
InetAddress   addr   =   InetAddress.getByName(hostname);  
Socket   socket   =   new   Socket(addr,   port);   //建立一个Socket  

//发送命令  
BufferedWriter   wr   =   new   BufferedWriter(new   OutputStreamWriter(socket.getOutputStream(),   "UTF8 "));  
wr.write( "GET   "   +   strPage   +   "   HTTP/1.0\r\n ");  
wr.write( "HOST: "   +   strServer   +   "\r\n ");  
wr.write( "\r\n ");  
wr.flush();  

//接收返回的结果  
BufferedReader   rd   =   new   BufferedReader(new   InputStreamReader(socket.getInputStream()));  
String   line;  
while   ((line   =   rd.readLine())   !=   null)   {  
System.out.println(line);  
}  
wr.close();  
rd.close();  
}  
catch   (Exception   e)  
{  
System.out.println(e.toString());  
}  
}  
}  


转http://java.ccidnet.com/art/3741/20061011/919025_1.html


------解决方案--------------------
顶。。学习。。。
------解决方案--------------------
代码耦合严重。如果只是需要抓网页的功能,那也就不必使用socket来做了。
------解决方案--------------------
分享的精神可嘉
------解决方案--------------------
好东西,学习!
------解决方案--------------------
分享的精神可嘉
---------------
的确啊..