我想用java从网站上检索文本。我可以通过以下方式轻松获取源代码:(谢谢随机的互联网用户,将其发布在其他地方)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class WebCrawler{
public static void main(String[] args) {
try {
URL google = new URL("http://stackoverflow.com");
URLConnection yc = google.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
然而,这让我有些网站返回403s的问题。有办法解决这个问题吗?
很简单,我希望使用java创建一个简单的机器人,它可以扫描论坛帖子并根据用户查询自动响应。我能在java中做到这一点吗?或者我是否需要从另一种语言/数据检索方法的角度来看待它?
感谢您的时间。
答案 0 :(得分:2)
是的,这可以用Java完成。从理论上讲,Web浏览器可以做任何事情,Java可以做 - 因为在最糟糕的情况下,你可以用Java编写Web浏览器。
403是“禁止”的回应。您可能需要设置特定的User-Agent
标头,否则该网站可能需要HTTP基本身份验证。或者也许是限制你的速度,你需要看到遵守他们的robots.txt
规则...
Java当然不是(在我看来)用于编写此类代码的最简单的语言,但是你在这里处于一个不错的轨道上。
至于标题中的“非来源” - 网页的来源是文本。如果您下载该页面,您将获得HTML;由你来解析你需要的东西并丢弃渣滓。
答案 1 :(得分:1)
您可能会收到403,因为您没有更改您的用户代理(Java),并且网站通过阻止它来响应您的机器人。如果您更改了您的用户代理变量,您可以进入,但这不是很道德,因为这些网站因某种原因阻止了Java用户代理。