使用Jsoup爬网页出现500错误

Jsoup官方文档中说明爬取网页的两种方法:

get

Document doc = Jsoup.connect("http://example.com/").get();

post

Document doc = Jsoup.connect("http://example.com")
  .data("query", "Java")
  .userAgent("Mozilla")
  .cookie("auth", "token")
  .timeout(3000)
  .post();

分别用这两种方法对好几个网址进行爬取数据,有的能直接获取文档,有的则出现500错误。但是出错的网址能够用浏览器正常访问

搜索了答案,有网友回答是需要设置userAgent进行伪装成浏览器,实践发现这个方案可行,网友代码如下:

// String url = " http://www.dianping.com/changsha/food";
    Document doc = null;
    Connection conn = Jsoup.connect(url);
    conn.header(
                "User-Agent",
                "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
    try {
        doc = conn.timeout(10000).get();
        System.out.println(doc.html());
    } catch (IOException e) {
        e.printStackTrace();
    }

按照官方文档中使用post方法中修改userAgent仍然不能解析;而在get方法中设置userAgent就可以解析了。

Document doc = null;
try {
    doc = Jsoup.connect(url)
    //.userAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2")
    .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31")
    .get();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
return doc;

你可能感兴趣的:(Jsoup)