c httpclient抓取网页(添加头部Cookie进行模拟登录的两种方法-乐题库)
优采云 发布时间: 2022-01-09 12:22c 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后的结果进行比较,您会发现模拟登录确实是可以的。
接下来,我们将讨论另一种实现模拟登录的方法,这种方法比较麻烦并且有一定的局限性(验证码),但它是最常用的。选择哪种模拟登录方式,有项目需求的时候就懂了~