鱼C论坛

 找回密码
 立即注册
查看: 4921|回复: 0

[萌新报道] Java爬虫 day2

[复制链接]
发表于 2022-5-10 23:42:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天学习的是带参数的get请求,代码如下:
  1. package test;

  2. import org.apache.http.HttpEntity;
  3. import org.apache.http.client.methods.CloseableHttpResponse;
  4. import org.apache.http.client.methods.HttpGet;
  5. import org.apache.http.client.utils.URIBuilder;
  6. import org.apache.http.impl.client.CloseableHttpClient;
  7. import org.apache.http.impl.client.HttpClients;
  8. import org.apache.http.util.EntityUtils;

  9. import java.io.IOException;
  10. import java.net.URISyntaxException;

  11. public class HttpGetParamTest {
  12.     public static void main(String[] args) throws URISyntaxException {
  13.         //创建HttpClient对象
  14.         CloseableHttpClient httpClient = HttpClients.createDefault();

  15.         //设置请求地址是:http://www.itcast.cn/search?keys=Java
  16.         //创建URIBuilder
  17.         URIBuilder uriBuilder = new URIBuilder("http://www.itcast.cn/search");

  18.         //设置参数
  19.         uriBuilder.setParameter("keys", "Java");

  20.         //创建HttpGet对象发起get请求,设置url访问地址
  21. //        HttpGet httpGet = new HttpGet("http://www.itcast.cn");
  22.         HttpGet httpGet = new HttpGet(uriBuilder.build());
  23.         httpGet.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36");
  24.         System.out.println("发起请求的地址是:" + httpGet);

  25.         CloseableHttpResponse response = null;
  26.         try {
  27.             //使用HttpClient对象发起请求,获取response
  28.             response = httpClient.execute(httpGet);

  29.             //解析响应,获取数据
  30.             //判断状态码是否是200
  31.             if (response.getStatusLine().getStatusCode() == 200) {
  32.                 HttpEntity httpEntity = response.getEntity();
  33.                 String content = EntityUtils.toString(httpEntity, "utf8");
  34.                 System.out.println("内容的长度是:"+content.length());
  35.             }else
  36.             {
  37.                 //如果返回状态不是200,比如404(页面不存在)等,根据情况做处理,这里略
  38.                 System.out.println("返回状态不是200");
  39.                 System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
  40.             }

  41.         } catch (IOException e) {
  42.             e.printStackTrace();
  43.         } finally {
  44.             try {
  45.                 response.close();
  46.             } catch (IOException e) {
  47.                 e.printStackTrace();
  48.             }
  49.             try {
  50.                 httpClient.close();
  51.             } catch (IOException e) {
  52.                 e.printStackTrace();
  53.             }
  54.         }
  55.     }


  56. }
复制代码

个人感觉带参数的方法挺麻烦的,要创建一个URIBuilder对象,还要调用方法将参数贴合进url里。我觉着与其这样,还不如用字符串的加法方便,将url利用加法整合完以后直接当作HttpGet的参数也挺香的。
当然这只是一己之见,不喜勿喷
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-16 09:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表