c httpclient抓取网页(添加头部Cookie进行模拟登录的两种方法-乐题库)

优采云 发布时间: 2022-01-09 12:22

  c httpclient抓取网页(添加头部Cookie进行模拟登录的两种方法-乐题库)

  在网络爬虫中,我们经常需要设置一些头信息,这样我们的网络爬取行为就更像是使用浏览器浏览网页,而我们有时需要正确设置头信息才能得到正确的数据,否则就有了信息可用的页面可能与浏览器显示的页面不同。

  设置header也可以模拟登录。我们可以设置cookies来获取登录页面并获取我们需要的数据。

  接下来我会讲两种模拟登录的方式。

  为模拟登录添加标头 cookie

  代码显示如下:

  import org.apache.http.Header;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import java.io.IOException;

import static java.lang.System.out;

/**

* Created by paranoid on 17-3-26.

*/

public class HttpClientDemo {

public static void main(String[] args){

//创建客户端

CloseableHttpClient closeableHttpClient = HttpClients.createDefault();

//创建请求Get实例

HttpGet httpGet = new HttpGet("https://www.baidu.com");

//设置头部信息进行模拟登录(添加登录后的Cookie)

httpGet.setHeader("Accept", "text/html,application/xhtml+xml," +

"application/xml;q=0.9,image/webp,*/*;q=0.8");

httpGet.setHeader("Accept-Encoding", "gzip, deflate, sdch, br");

httpGet.setHeader("Accept-Language", "zh-CN,zh;q=0.8");

//httpGet.setHeader("Cookie", ".......");

httpGet.setHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" +

" (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");

try {

//客户端执行httpGet方法,返回响应

CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpGet);

//得到服务响应状态码

if (closeableHttpResponse.getStatusLine().getStatusCode() == 200) {

//打印所有响应头

Header[] headers = closeableHttpResponse.getAllHeaders();

for (Header header : headers) {

out.println(header.getName() + ": " + header.getValue());

}

}

else {

//如果是其他状态码则做其他处理

}

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

httpClient.close();

}

}

}

  只要在上面的代码中添加登录cookie,就可以进行模拟登录。至于为什么添加cookie后可以进行模拟登录,大家可以在百度上搜索一下cookie的机制和作用,相信你就明白了。

  以上参数可以在chrome的开发者工具中获取。Cookie是您手动登录后生成的,您也可以获取。设置这些参数后,我们模拟浏览器的行为和模拟登录。

  您可以将不添加cookie的结果与添加cookie后的结果进行比较,您会发现模拟登录确实是可以的。

  接下来,我们将讨论另一种实现模拟登录的方法,这种方法比较麻烦并且有一定的局限性(验证码),但它是最常用的。选择哪种模拟登录方式,有项目需求的时候就懂了~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线