2012-04-12 125 views
18

我想解析任何给定页面的HTML转储。我使用HTML Parser并尝试使用JSoup进行解析。JSoup.connect抛出403错误,而Apache.httpclient能够获取内容

我发现有用的功能,在Jsoup但我得到403错误,同时呼吁Document doc = Jsoup.connect(url).get();

我试过了HTTPClient,得到的HTML转储,这是成功的为相同的URL。

为什么JSoup会给403提供给来自commons http client的内容的同一个URL? 我做错了什么?有什么想法吗?

+1

请shre链接的伎俩。你连接到。 – vacuum 2012-04-12 09:27:41

+3

检查链接http://stackoverflow.com/questions/7508813/can-jsoup-simulate-a-button-press,类似问题的报告 – 2012-04-12 09:39:29

+0

我想尝试tcpdump或类似的工具来查看哪些数据是不同的由HTTP客户端发送,并由JSoup发送。 – 2012-04-12 09:40:22

回答

47

工作方案如下:(感谢安杰洛Neuschitzer提醒把它作为一个解决方案):

Document doc = Jsoup.connect(url).userAgent("Mozilla").get(); 
Elements links = doc.getElementsByTag(HTML.Tag.CITE.toString); 
for (Element link : links) { 
      String linkText = link.text(); 
      System.out.println(linkText); 
} 

所以,的userAgent呢:)

+2

+1!它正常工作!真棒! – 2012-10-31 20:42:10