前些天在csdn上看到有人说dianping.com上的东西没法抓取,我就用htmlparser试了试,果然不行。看返回结果
Server returned HTTP response code: 500 for URL: http://www.dianping.com/shop/2212912
不能使用:然后想到换httpclient来试试:
HttpClient hc=new HttpClient();
GetMethod gm=new GetMethod("http://www.dianping.com/shop/1968937");
hc.executeMethod(gm);
System.out.print(gm.getResponseBodyAsString());
返回的数据:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>提示_大众点评网</title><style type="text/css">html{background:#f7f7f7;}body{background:#fff;color:#333;font-family:"MicrosoftYaHei","微软雅黑",Verdana,Arial;margin:2em auto 0 auto;width:700px;padding:1em 2em;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;border:1px solid #dfdfdf;}a{color:#2583ad;text-decoration:none;}a:hover{color:#d54e21;}h1{border-bottom:1px solid #dadada;clear:both;color:#666;margin:5px 0 5px 0;padding:0;padding-bottom:1px;}p{text-align:center;}sub{display:block;margin:0;padding:0;color:#aaa;font-size:11px;text-align:right;}</style></head><body><h1 id="logo" style="text-align: center"><img alt="dianping.com" src="http://i1.dpfile.com/s/img/simplelogo.gif" /></h1><p>对不起,您的访问存在某些问题。<br />如果您是正常访问,请与<a href="mailto:spam@dianping.com">spam@dianping.com</a>联系,并附上以下信息:<br /><textarea rows="10" cols="80">401
221.221.153.137
jakarta commons-httpclient/3.0</textarea></p><sub>401</sub></body></html>
大家可以把他复制到html看看效果,主要是提示我的浏览器错误:使用httpclient默认为jakarta commons-httpclient/3.0
我就换了user-agent试试
在上面的代码中加入
hc.getParams().setParameter(HttpMethodParams.USER_AGENT,"Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090803 Fedora/3.5.2-2.fc11 Firefox/3.5.2");//设置信息
然后再提交就行了。。这个网站是通过判断user-agent来实现是不是正常的访问.
分享到:
相关推荐
### User-Agent大全解析 在IT领域,特别是在Web开发与维护工作中,User-Agent(用户代理)字符串扮演着极其重要的角色。User-Agent是HTTP请求头的一部分,它携带了客户端(如浏览器或其他HTTP客户端)的信息,帮助...
"浅谈Okhttp去除请求头user-agent" Okhttp是一个流行的Android网络请求库,它提供了一个简洁的API来发送HTTP请求。然而,在某些情况下,我们需要去除请求头中的User-Agent信息,以避免服务器端的检测或其他原因。本...
“User-Agent”描述了发起请求的客户端。 **1.1.4 HTTP 实体**:HTTP实体由实体头和可选的实体主体组成。实体头提供了关于实体主体的信息,例如其长度、编码方式等。实体主体则携带了实际的数据。 **1.1.5 确保低...
### User-Agent(UA)概述 在互联网领域,User-Agent(简称UA)是HTTP请求头部中的一个字段,用于向服务器提供发起请求的客户端信息。UA字符串通常包含浏览器名称、操作系统、设备类型等信息,有助于服务器根据...
去取用户代理 为每个请求添加一个User-Agent标头。安装 npm install --save go-fetch-useragent用法 var HttpClient = require('go-fetch');var useragent = require('go-fetch-useragent');HttpClient() .use...
- 自定义请求头,如设置User-Agent、Cookie等。 - 实现HTTP连接管理,如设置连接超时、复用连接等。 - 配置SSL/TLS以实现安全的HTTPS通信。 - 处理文件上传和下载,利用httpmime库构造多部分请求。 - 使用commons-io...
4. **自定义请求头**:开发者可以方便地添加或修改HTTP请求头,如Cookie、User-Agent等。 5. **请求和响应处理**:库提供了丰富的API,可以方便地解析和操作HTTP响应,包括状态码、响应头和内容。 **Apache Commons...
2. 构建`HttpPost`对象,设置目标URL(京东登录接口)和请求头(可能包括User-Agent、Content-Type等)。 3. 如果登录需要表单数据,可以创建一个`List<NameValuePair>`,添加用户名、密码等参数,然后用`...
3. **设置请求头**:可以通过`.setRequestHeader`方法添加请求头,比如设置User-Agent或Accept-Type。 ```java getMethod.setRequestHeader("User-Agent", "Mozilla/5.0"); ``` 4. **执行请求**:使用`...
根据提供的代码片段和描述信息,我们可以看到在使用HttpClient进行POST请求时,设置了四个重要的HTTP头部信息:`Referer`、`Content-Type`、`Accept`和`User-Agent`。下面将详细介绍这四个头部信息的作用及如何正确...
5. **请求头**:HttpClient允许你添加自定义请求头,如设置User-Agent,Content-Type等。例如: ```java httpGet.setHeader("User-Agent", "MyApp/1.0"); ``` 6. **连接管理**:HttpClient提供了一种机制来管理...
3. 设置请求头:例如,设置User-Agent、Accept-Type、Authorization等头信息。 4. 执行请求:调用HttpClient的execute方法,传入请求对象。 5. 处理响应:获取HttpEntity,从中读取响应内容,关闭连接。 HttpClient...
HttpClient允许我们创建一个HttpURLConnection,设置请求头,比如User-Agent,以模拟浏览器行为。同时,我们需要处理登录页面可能存在的验证码或饼干(cookies),这些通常通过HttpClient的CookieStore来管理。 ...
3. **设置请求头**:你可以通过`setHeader`方法添加自定义请求头,例如设置User-Agent或者Content-Type: ```java httpPost.setHeader("Content-Type", "application/json"); httpPost.setHeader("User-Agent", ...
例如,设置User-Agent:`httpGet.setHeader("User-Agent", "Mozilla/5.0");` 4. **携带请求参数**:对于POST请求,我们可以通过`HttpPost`的`setEntity`方法传递参数。通常,我们会创建一个`StringEntity`或`...
3. **模拟浏览器行为**:设置User-Agent,处理JavaScript,支持cookies,模仿真实用户的行为。 4. **反反爬策略**:应对网站的反爬机制,如设置代理IP,处理验证码,调整请求间隔等。 五、总结 HttpClient作为...
3. **设置请求头**:如果需要,可以添加请求头,例如设置User-Agent: ```java httpGet.setHeader("User-Agent", "Mozilla/5.0"); ``` 4. **执行请求并获取响应**:然后,通过HttpClient执行请求,并获取...
通过设置`User-Agent`头,我们可以模拟不同的浏览器发送请求。 执行`httpClient.execute(httpPost)`后,我们获取了响应,可以检查状态码、读取响应体等。最后,记得关闭响应和HttpClient实例以释放资源。 然而,...
例如,你可以通过设置User-Agent来模拟不同的浏览器行为,或者通过配置连接超时来避免因网络问题导致的长时间等待。 其次,HttpClient库支持SSL/TLS协议,这意味着它可以安全地与HTTPS站点进行通信。这对于爬取需要...
它支持设置各种HTTP头,如Cookie、User-Agent等,还能够处理重定向、超时、连接池等问题。此外,HttpClient还具有处理HTTPS协议的能力,可以处理SSL/TLS加密,确保数据在传输过程中的安全性。 在HTTPS实战中,首先...