jsoup on imdb 403错误

时间:2016-04-01 22:03:38

标签: java html jsoup

我需要解析imdb页面才能显示结果。我正在为此目的使用Jsoup。下面是我为此目的编写的代码。当我运行代码时,我看到403错误。我重新验证了网址,网址似乎是正确的。

import java.io.IOException;
import java.net.URLEncoder;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class ParseIMDB {

    public static void parse() throws IOException{
        Document doc = Jsoup.connect("http://imdb.com/search/title?count=100&genres=action&languages=en&release_date=2010,2016&title_type=feature").get();
        Elements newsHeadlines = doc.select("#main > table.results tbody");
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
        parse();
        } catch (Exception e){
            System.out.println("Exception found!");
            e.printStackTrace();
        }
    }
}

我尝试使用URLEncode.encode对网址进行编码,但它也有帮助。

上述代码的堆栈跟踪如下:

  

发现异常! org.jsoup.HttpStatusException:HTTP错误提取   URL。状态= 403,网址= http://www.imdb.com/search/title/ at   org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:537)     在   org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:534)     在   org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:493)     在org.jsoup.helper.HttpConnection.execute(HttpConnection.java:205)     在org.jsoup.helper.HttpConnection.get(HttpConnection.java:194)at   ParseIMDB.parse(ParseIMDB.java:13)at   ParseIMDB.main(ParseIMDB.java:20)

2 个答案:

答案 0 :(得分:2)

如果您在请求中添加User-Agent标头,我相信它会正常工作。你可以这样做:

 Document doc = Jsoup.connect("http://imdb.com/search/title?count=100&genres=action&languages=en&release_date=2010,2016&title_type=feature")
                .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36")
                .get();

此解决方案已经过测试并正常运行,并返回了一系列电影。

答案 1 :(得分:0)

HTTP 403表示禁止。很可能imdb阻止了程序化请求。