liuxinglanyue 发表于 2013-1-29 11:37:57

抓取防爬虫的网站信息

有的网站限制网络爬虫的抓取,例如javaeye。会出现错误提示: 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr"><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />    <meta name="keyword" content="JavaEye,IT,开发,交流,社区,java, ruby, ajax, agile" />    <title>您的访问请求被拒绝 - JavaEye技术社区</title>    <style type="text/css">      .clearfix:after {      content: ".";      display: block;      height: 0;      clear: both;      visibility: hidden;      }      .clearfix {      display:block;      }      .left {      float: left;      }      h1 {font-size: 20px;color: #6293BB;}      p{font-size: 14px;color: #6293BB;}    </style></head><body>    <div style="padding:50px 0 0 300px">      <h1>您的访问请求被拒绝</h1>    </div>    <div class="clearfix">      <div class="left" style="padding-left:120px">      <img src="/images/filenotfound.jpg" width="128" height="128" />      </div>      <div class="left" style="width:700px;padding:30px 0 0 30px">      <p>您可能使用了网络爬虫抓取JavaEye网站页面!</p>      <p>JavaEye网站不允许您使用网络爬虫对JavaEye进行恶意的网页抓取,请您立刻停止该抓取行为!</p>      <p>如果您的网络爬虫不属于恶意抓取行为,希望JavaEye网站允许你进行网页抓取,请和JavaEye管理员联系,取得授权: webmaster<img src='/images/email.gif' alt="Email" />support.iteye.com</p>      <p>如果您确实使用浏览器访问,但是被错误的识别为网络爬虫,请将您浏览器发送的“User Agent”信息告知我们,帮助我们解决错误: webmaster<img src='/images/email.gif' alt="Email" />support.iteye.com</p>      </div>    </div>    <div style="padding:20px 0 0 500px">      <a href="http://www.iteye.com"><img src='/images/logo_small.gif' border='0'></a>    </div></body></html> 不过可以设置下链接的参数。
URL url=new URL(pathString); 
    URLConnection con=url.openConnection(); 
    con.setDoOutput(true); 
    con.setRequestProperty("User-Agent", ""); 
 加上上面红色的一句,就可以了。 
    或者使用httpclient是,添加 
 
 
HttpClient httpClient=new HttpClient();    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(50000);   httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT,"Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090803 Fedora/3.5");  这样就可以了。
转:http://gbfd2012.iteye.com/blog/732227
 
页: [1]
查看完整版本: 抓取防爬虫的网站信息