设为首页收藏本站language 语言切换
查看: 1252|回复: 0
收起左侧

[问题求助] 简单的java实现爬虫

[复制链接]
发表于 2021-12-16 16:27:44 | 显示全部楼层 |阅读模式
最近由于工作的需要,独自开始研究爬虫爬取互联网数据,经过一段时间的探究,踩过许多坑,也学习到了许多以往不知道的知识。在这里总结一下经验,顺便分享给大家,希望可以帮助到有需要的朋友,当然如果有爬虫大佬能够不吝赐教那就更好啦。
大部分人都是使用的python来实现爬虫的,因为自己学的是java,也没更多时间去学习新的语言了,所以还是选择了用java来实现。本篇爬虫技术分享是用java来实现了爬取百度的搜索结果 ,java的使用如下:
  1. import org.apache.commons.httpclient.Credentials;
  2. import org.apache.commons.httpclient.HostConfiguration;
  3. import org.apache.commons.httpclient.HttpClient;
  4. import org.apache.commons.httpclient.HttpMethod;
  5. import org.apache.commons.httpclient.HttpStatus;
  6. import org.apache.commons.httpclient.UsernamePasswordCredentials;
  7. import org.apache.commons.httpclient.auth.AuthScope;
  8. import org.apache.commons.httpclient.methods.GetMethod;

  9. import java.io.IOException;

  10. public class Main {
  11.     # 代理服务器(产品官网 www.16yun.cn)
  12.     private static final String PROXY_HOST = "t.16yun.cn";
  13.     private static final int PROXY_PORT = 31111;

  14.     public static void main(String[] args) {
  15.         HttpClient client = new HttpClient();
  16.         HttpMethod method = new GetMethod("https://httpbin.org/ip");

  17.         HostConfiguration config = client.getHostConfiguration();
  18.         config.setProxy(PROXY_HOST, PROXY_PORT);

  19.         client.getParams().setAuthenticationPreemptive(true);

  20.         String username = "16ABCCKJ";
  21.         String password = "712323";
  22.         Credentials credentials = new UsernamePasswordCredentials(username, password);
  23.         AuthScope authScope = new AuthScope(PROXY_HOST, PROXY_PORT);

  24.         client.getState().setProxyCredentials(authScope, credentials);

  25.         try {
  26.             client.executeMethod(method);

  27.             if (method.getStatusCode() == HttpStatus.SC_OK) {
  28.                 String response = method.getResponseBodyAsString();
  29.                 System.out.println("Response = " + response);
  30.             }
  31.         } catch (IOException e) {
  32.             e.printStackTrace();
  33.         } finally {
  34.             method.releaseConnection();
  35.         }
  36.     }
  37. }
复制代码

在学习的过程中我也遇到了一些网站的反爬机制,像User-Agent限制,限制IP访问次数,还有验证码等。这些反爬机制比较简单解决的也有很难解决的,像限制ip访问我们可以直接通过购买高质量代理ip来解决。比如示例里面使用的亿牛云爬虫代理。难度大就需要更深入的学习才能解决了。




您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-3 17:29 , Processed in 0.730820 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

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