1

我正在尝试使用 jsoup 从特定站点http://www.justdial.com提取网页的标题,如下所示:

    Document doc=jsoup.connect("http://www.justdial.com/Mumbai/Satkar-Veg-Restaurant-%3Cnear%3E-Sahakar-Nagar-Next-To-Talwalkars-Gym-Wadala/022P5318248_TXVtYmFpIFJlc3RhdXJhbnRz_BZDET").get();
    String title=doc.title();
    System.out.println("Title="+title);

它给了我一个标题字符串,它甚至不在该页面的源代码中的任何位置,但可以在浏览器中查看。但是对于来自不同站点的所有页面,它都可以正常工作。那么任何人都可以给出背后的原因是什么以及如何在这种情况下获得预期的结果。谢谢你。

4

2 回答 2

4

您应该设置用户代理标头,以便网站为您返回合适的 html

Document doc = Jsoup.connect("http://www.justdial.com/Mumbai/Satkar-Veg-Restaurant-%3Cnear%3E-Sahakar-Nagar-Next-To-Talwalkars-Gym-Wadala/022P5318248_TXVtYmFpIFJlc3RhdXJhbnRz_BZDET").userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2").get();
String title = doc.title();
System.out.println(title);
于 2013-01-25T06:42:03.210 回答
1

如果给定页面的标题是通过 Javascript 更新的,它将无法在源代码中查看,也无法被脚本抓取。

您可以使用 webdeveloper 工具中的“查看生成的源”菜单项将原始源与生成的源进行比较

于 2013-01-25T06:24:50.413 回答