2016-09-18 101 views
0

我想使用jsoup/java来访问基于用户输入的主题的谷歌新闻文章。当我尝试访问谷歌新闻网页,但是,我得到一个运行时错误这条线:Java - Jsoup HTTP错误获取URL

try { 
doc = (org.jsoup.nodes.Document) Jsoup.connect("https://www.google.com/search?hl=en&gl=us&tbm=nws&authuser=0&q="+ "technology").get(); 
         } catch (IOException e1) { 
          // TODO Auto-generated catch block 
          e1.printStackTrace(); 
         } 

当我执行这个代码,我得到这个错误:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=https://www.google.com/search?hl=en&gl=us&tbm=nws&authuser=0&q=technology 
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:590) 
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) 
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) 
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216) 
at newsbot.NewsBot.onUpdateReceived(NewsBot.java:93) 
at org.telegram.telegrambots.updatesreceivers.BotSession$HandlerThread.run(BotSession.java:197) 

但是,如果我输入link到谷歌,我想接取的网页完全apears。我非常感谢你的帮助,谢谢。

+0

你可以添加-Djavax。 net.debug =全部查看详细日志。这应该有助于调试。 –

回答

0

您需要包括用户代理:

Jsoup.connect("https://www.google.com/search?hl=en&gl=us&tbm=nws&authuser=0&q="+ "technology") 
    .userAgent("blah-blah") 
    .get(); 
0

可以包括用户代理,这样的页面不会被禁止(HTTP 403)

Document doc = (Document) Jsoup 
       .connect("https://www.google.com/search?hl=en&gl=us&tbm=nws&authuser=0&q=" + "technology") 
       .ignoreContentType(true) 
       .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").get(); 
     System.out.println(doc);