如何访问网站的 robots.txt
How to access a website's robots.txt
我有一个 Java 程序,我正在编写一个接受 URL 作为参数的方法。有没有办法让方法 return 与我正在传递的 URL 关联的 'robots.txt'(例如 https://www.google.com/robots.txt)文件的副本?
提前致谢!
我现在对 robot.txt 几乎一无所知,但我似乎记得,你总是将它存储在根路径中。所以我相信像下面示例中的 getRobot()
这样的方法应该适合你:
import java.io.InputStream;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
public class Robots {
public static void main(String[] args) {
System.out.println(new Robots().getRobot("http://www.google.de/q?Stack Overflow"));
}
public String getRobot(String url) {
Pattern p = Pattern.compile("^(http(s?)://([^/]+))");
Matcher m = p.matcher(url);
if (m.find()) {
System.out.println(m.group(1));
try (InputStream in = new URL(m.group(1) + "/robots.txt").openStream()) {
return IOUtils.toString(in);
} catch (Exception e) {
e.printStackTrace();
}
}
return "no robots allowed";
}
}
查看 main()
工作示例
我有一个 Java 程序,我正在编写一个接受 URL 作为参数的方法。有没有办法让方法 return 与我正在传递的 URL 关联的 'robots.txt'(例如 https://www.google.com/robots.txt)文件的副本?
提前致谢!
我现在对 robot.txt 几乎一无所知,但我似乎记得,你总是将它存储在根路径中。所以我相信像下面示例中的 getRobot()
这样的方法应该适合你:
import java.io.InputStream;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
public class Robots {
public static void main(String[] args) {
System.out.println(new Robots().getRobot("http://www.google.de/q?Stack Overflow"));
}
public String getRobot(String url) {
Pattern p = Pattern.compile("^(http(s?)://([^/]+))");
Matcher m = p.matcher(url);
if (m.find()) {
System.out.println(m.group(1));
try (InputStream in = new URL(m.group(1) + "/robots.txt").openStream()) {
return IOUtils.toString(in);
} catch (Exception e) {
e.printStackTrace();
}
}
return "no robots allowed";
}
}
查看 main()
工作示例