我尝试解析以.tv
和.mobi
扩展名结尾的网页,但每次尝试时我都会遇到同样的错误。 Jsoup可以轻松解析以.com
,.org
,.in
等结尾但不是.tv
或.mobi
的网站。
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.jsoup.nodes.Element;
public class sample {
public static void main(String[] args) throws IOException{
Document doc =Jsoup.connect("http://www.xmovies8.tv").get();
String title = doc.title();
System.out.println(title);
}
}
堆栈追踪:
Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=http://www.xmovies8.tv
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:598)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:548)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:235)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:224)
at eric.sample.main(sample.java:30)
/home/azeem/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconds)
而且它也无法解析:
Jsoup中是否有任何解决方案,以便我可以连接到以.mobi
,.tv
,.xyz
等结尾的不同网站?
答案 0 :(得分:0)
您的问题与您试图搜索的域名的TLD无关,事实上,它与名称完全无关,甚至与Jsoup无关。
如果您阅读了堆栈跟踪,您将看到收到的响应代码为:
HTTP 403 Forbidden
,根据HTTP Specification,表示您的请求被网络服务器看到,并故意拒绝。
现在,这可能有很多原因,这些原因都取决于你想要抓住的网站。
可能是该网站看到你正在试图刮,并且他们明确地避开了被刮掉的方式
也可能是该页面需要您没有的权限,或者您需要登录。
我还注意到特定域名使用CloudFlare
,因此CloudFlare可能会在您的请求到达网站之前拦截您的请求。
我会确保它不会违反网站的政策,如果不是,请尝试将刮刀的用户代理标题更改为普通浏览器用户代理而不是java,看看它是否有效。