JAVA如何正确使用爬虫代理

198 篇文章 0 订阅
189 篇文章 0 订阅
本文介绍了如何在Java中使用HttpClient3.1库配置代理进行爬虫操作。示例代码展示了如何设置代理服务器(PROXY_HOST: t.16yun.cn, PROXY_PORT: 31111)进行HTTP请求,并提供了相关类和方法的使用说明。如需了解更多详情,请访问www.16yun.cn。" 108882316,9721991,过拟合与欠拟合:原因、识别与解决方案,"['机器学习', '深度学习', '模型训练', '模型评估', '特征选择']
摘要由CSDN通过智能技术生成

HttpClient3.1
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;

import java.io.IOException;

public class Main {
private static final String PROXY_HOST = “t.16yun.cn”;
private static final int PROXY_PORT = 31111;

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

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

    client.getParams().setAuthenticationPreemptive(true);

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

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

    try {
        client.executeMethod(method);

        if (method.getStatusCode() == HttpStatus.SC_OK) {
            String response = method.getResponseBodyAsString();
            System.out.println("Response = " + response);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        method.releaseConnection();
    }
}

}
点击此链接了解更多 www.16yun.cn

使用Selenium进行Java爬虫时,如果遇到页面内容为空的情况,可能是以下几个原因: 1. **元素未加载完成**:Selenium默认模拟浏览器行为,如果网页内容需要通过JavaScript动态加载,那么在页面初始化时可能看不到预期的内容。可以考虑使用`WebDriverWait`或`ExpectedConditions`等待特定元素加载完成。 ```java WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("myElement"))); ``` 2. **权限或反爬策略**:网站可能会有防止爬虫访问的措施,如检查User-Agent、设置cookies或IP限制。确保你的Selenium配置真实模拟用户行为,并遵守网站的robots.txt文件。 3. **网络问题或代理设置**:如果网络不稳定,可能会影响页面加载。检查网络连接和代理设置是否正常。 4. **API请求**:如果是API返回的数据,确认URL或请求头信息是否正确,以及是否有相应的访问权限。 5. **HTML结构变化**:如果目标网站的HTML结构发生变化,之前的定位方式可能不再适用。需要更新选择器或者使用更灵活的定位方式,如XPath或CSS选择器。 解决这类问题时,建议打印出相关的错误信息,查看开发者工具(如Chrome DevTools)中网络请求的状态和响应内容,以便找出真正的原因。同时,也要注意定期检查并适应网站的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值