最近使用java写爬虫的时候,遇到查询所爬取地址的ip信息,通过百度搜索发现有java.net包里是有两个类可以完成此类工作
1.InetAddress
2.InetSocketAddress
通过查看InetSocketAddress源码不难发现其实 InetSocketAddress也是基于InetAddress来定位ip地址的
所以我选择直接使用InetAddress实现
示例如下:
private String getHostAndPort(String val) throws MalformedURLException {
URL url1 = new URL(val);
String host = url1.getHost();
int port = url1.getPort();
if(port==-1){
if(val.startsWith("https")){
port = 443;
}else{
port = 80;
}
}
try {
InetAddress byName = InetAddress.getByName(host);
host = byName.getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return host+":"+port;
}
缺点:
只能获取到单个ip地址信息
如果一个域名映射多个地址ip的情况,改方法是获取不到所有的ip地址的
需要参考我的另外一篇文章 https://blog.youkuaiyun.com/weixin_39851884/article/details/94007693 <java通过LookUp获取域名映射的所有ip地址列表>