httpclient抓取网页碰到403怎么解决

问题描述

packagetools.crawler;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.util.zip.GZIPInputStream;importorg.apache.commons.httpclient.HttpClient;importorg.apache.commons.httpclient.methods.GetMethod;publicclassDownLoad{publicstaticvoidmain(String[]args)throwsIOException{System.out.println(DownLoad.downfromweb("http://tech.sina.com.cn/mobile/n/2013-05-14/17328338983.shtml"));}publicstaticStringdownfromweb(Stringurl)throwsIOException{HttpClienthttpclient=newHttpClient();//httpclient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);//httpclient.getParams().setParameter("http.protocol.single-cookie-header",true);GetMethodgetMethod=newGetMethod(url);//http://itindex.net//google//getMethod.setRequestHeader("Host","laohuang.iteye.com");//getMethod.setRequestHeader("Connection","Keep-Alive");//getMethod.setRequestHeader("Accept","*/*");//getMethod.setRequestHeader("From","goolebot@googlebot.com");//getMethod.setRequestHeader("User-Agent",//"Mozilla/5.0(compatible;Googlebot/2.1;+http://www.google.com/bot.html)");//getMethod.setRequestHeader("Accept-Encoding","gzip,deflate");//baidugetMethod.setRequestHeader("Host","localhost");//itindex.netgetMethod.setRequestHeader("Connection","Keep-Alive");getMethod.setRequestHeader("Accept","*/*");getMethod.setRequestHeader("From","goolebot@googlebot.com");getMethod.setRequestHeader("User-Agent","Mozilla/5.0(WindowsNT5.1;rv:5.0)Gecko/20100101Firefox/5.0");getMethod.setRequestHeader("Accept-Encoding","gzip");intstatusCode=httpclient.executeMethod(getMethod);System.out.println(statusCode);if(statusCode==200)returngetBodyAsString(getMethod,getMethod.getResponseCharSet());elsereturn"";}privatestaticStringgetBodyAsString(GetMethodgetHC,Stringcharset)throwsIOException{StringacceptEncoding="";if(getHC.getResponseHeader("Content-Encoding")!=null)acceptEncoding=getHC.getResponseHeader("Content-Encoding").getValue();StringBuffersb=newStringBuffer();if(acceptEncoding.toLowerCase().indexOf("gzip")>-1){//建立gzip解压工作流InputStreamis=getHC.getResponseBodyAsStream();GZIPInputStreamgzin=newGZIPInputStream(is);InputStreamReaderisr=newInputStreamReader(gzin,charset);//设置读取流的编码格式,自定义编码java.io.BufferedReaderbr=newjava.io.BufferedReader(isr);Stringtempbf;while((tempbf=br.readLine())!=null){sb.append(tempbf);sb.append("rn");}isr.close();gzin.close();}else{InputStreamReaderisr=newInputStreamReader(getHC.getResponseBodyAsStream(),charset);//设置读取流的编码格式,自定义编码java.io.BufferedReaderbr=newjava.io.BufferedReader(isr);Stringtempbf;while((tempbf=br.readLine())!=null){sb.append(tempbf);sb.append("rn");}isr.close();}getHC.releaseConnection();returnsb.toString();}}

解决方案

解决方案二:
楼主解决了吗,我也遇到这个问题了,返回403
解决方案三:
403应该是权限不够引起的吧,看看你访问的页面是否需要什么特殊权限?
解决方案四:
引用2楼yyy269954107的回复:

403应该是权限不够引起的吧,看看你访问的页面是否需要什么特殊权限?

有的时候可以进去,有的时候403

时间: 2024-10-25 07:03:01

httpclient抓取网页碰到403怎么解决的相关文章

关于URL URLCONNECTION或httpclient抓取网页全部内容时,中文丢失问题

问题描述 比如我抓取下来的内容应该是<li>唱片公司:环球音乐</li>,结果用httpclient抓下来之后变成<li>唱片公司:环球音乐</li>用URL或者UrlConnection也一样的问题,直接右键查看网页源代码也是这样的问题...求解 问题补充:谢谢maowei009,但是我把环球音乐贴进记事本,然后用ie或者火狐打开,可以正常显示"环球音乐"四个字,求解,这是何种编码格式?在google中贴这些也能正常显示中文....头大

HttpClient抓取网页的两种方式_应用技巧

一.利用NodeFilter对网页进行分析 1.生成一个Parser a.通过url提取网络上的网页 复制代码 代码如下: Parser parser = new Parser(); parser.setURL("http://www.yahoo.com.cn"); b.提取本地网页文件 通过读文件把网页文件转化成字符串: 复制代码 代码如下: Parser parser=Parser.createParser(html,charset); 2.利用NodeFilter做一个filte

php curl实现多线程抓取网页并同时下载图片

php语言本身不支持多线程,所以开发爬虫程序效率并不高,借助Curl Multi 它可以实现并发多线程的访问多个url地址.用 Curl Multi 多线程下载文件代码: 代码1:将获得的代码直接写入某个文件 <?php $urls =array(   'http://www.111cn.net/',   'http://www.baidu.com/',  );// 设置要抓取的页面URL       $save_to='test.txt';  // 把抓取的代码写入该文件      $st =

技术-用jsoup抓取网页获取网页源码的时候,得到的源码和在网站上面点击右键查看源码不相同,怎么解决

问题描述 用jsoup抓取网页获取网页源码的时候,得到的源码和在网站上面点击右键查看源码不相同,怎么解决 用jsoup抓取网页获取网页源码的时候,得到的源码和在网站上面点击右键查看源码不相同,怎么解决 Document doc = Jsoup.parse(new URL(url), 5000); 解决方案 一部分html是ajax异步加载的,你得用fiddler调试,得到这些请求,照着写 解决方案二: C++ 抓取网页的源码获取网页的源码获取网页源码工具类

网络爬虫-用Java来抓取网页实例中HttpClient类的问题

问题描述 用Java来抓取网页实例中HttpClient类的问题 报这么一大堆错误我也是受不了了...... 主要的问题应该是HttpClient类这个东西,在网上查了这个类是httpclient-2.x.jar包的产物,我导入的是httpclient-4.2.2.jar和httpcore-4.2.2.jar包,而这两个新的工具包并不包含HttpClient类,查阅了Java API帮助文档后,自己并没有找到HttpClient类的替代类,而是一堆接口和抽象类,由于是刚开始写这个,所以有点懵.

linux-求助!!!curl抓取网页出现浏览器不支持嵌入式框架,该如何解决

问题描述 求助!!!curl抓取网页出现浏览器不支持嵌入式框架,该如何解决 各位大神,我用curl来抓取学校网页时出现这种情况应该如何解决呀! ![http://img.ask.csdn.net/upload/201604/01/1459483867_199566.jpg]() 解决方案 curl抓取网页内容,跟浏览器怎么查看没关系,或者你的请求被服务器检测出不符合

快来帮帮我,今天就要解决抓取网页问题

问题描述 我用C#做一个WINFORM程序,用来抓取某个网页上的TETXBOX再往里面填数据.但这个网页是用openModalDialog方法弹出的窗口,我只能找到它的父窗口找不到它,上午查了半天还是没得法,请各位大虾指点小子一.二. 解决方案 解决方案二:constintWM_GETTEXT=0x000D;constintWM_SETTEXT=0x000C;constintWM_CLICK=0x00F5;[DllImport("User32.dll",EntryPoint="

ajax-请问关于java 通过http client抓取网页信息返回:请开启JavaScript并刷新该页

问题描述 请问关于java 通过http client抓取网页信息返回:请开启JavaScript并刷新该页 初学httpClient,想去抓取某个网页查询出来的结果信息,通过浏览器监控发现response出来的信息和java控制台打印出来的不一样. package com.test; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import

PHP中使用file_get_contents抓取网页中文乱码问题解决方法_php技巧

本文实例讲述了PHP中使用file_get_contents抓取网页中文乱码问题解决方法.分享给大家供大家参考.具体方法如下: file_get_contents函数本来就是一个非常优秀的php自带本地与远程文件操作函数,它可以让我们不花吹挥之力把远程数据直接下载,但我在使用它读取网页时会碰到有些页面是乱码了,这里就来给各位总结具体的解决办法. 根据网上有朋友介绍说原因可能是服务器开了GZIP压缩,下面是用firebug查看我的网站的头信息,Gzip是开了的,请求头信息原始头信息,代码如下: 复