首先,Jsoup的connect方法可能没有问题,我的担心有可能是由于对Document的html()方法的误解,该方法继承自Element。
我的问题的重点是从一个特定的URL中提取信息,但由于Document的html()方法目前返回的是String,我担心Jsoup的connect()方法不是连接到指定的URL,而是连接到网站的通用URL。
这就是我希望我的程序连接到的具体URL。http:/redditsearch.io?term=&dataviz=false&aggs=false&subreddits=&searchtype=posts&search=true&start=1587355200&end=1587441600&size=100。
但我认为它只是连接到该网站的通用网址。http:/redditsearch.io
我相信这是因为Document的html()方法返回的字符串。
Document doc = Jsoup.connect("http://redditsearch.io/?term=&dataviz=false&aggs=false&subreddits=&searchtype=posts&search=true&start=1587355200&end=1587441600&size=100").get();
String html = doc.html();
System.out.println(html);
它打印了一大堆HTML,所以我只和你们分享其中的相关内容(请记住,下面的文字是由Document的html()方法返回的)。
<div id="results-container" class="data-display">
<div id="posts" class="results"></div>
<div id="comments" class="results"></div>
</div>
在我的浏览器(firefox)的检查器中,这个特定URL的HTML方面是这样的(请记住,下面的文字不是由Document的html()方法返回的,而是由我的浏览器的检查器显示的)。
<div id="results-container" class="data-display">
<div id="posts" class="results"></div>
<div class="submission"...> </div> (first line under "posts")
...
<div class="submission"...> </div> (Nth line under "posts")
<div id="comments" class="results"></div>
</div>
意思是说,当我将浏览器连接到特定的URL时,div id="posts "标签下有多行文字;然而,当我将其连接到通用URL "redditsearch.io "时,浏览器的检查器中没有该标签下的文字(即当我的浏览器连接到通用URL时,HTML的这个方面看起来就像我的检查器中给出的第一个HTML例子)。这就是为什么我认为我的程序是连接到通用URL,即使我使用特定的URL作为参数。
另一点可能是 "提交 "divs通过浏览器中的JavaScript添加。
要检查这一点,可以关闭浏览器中的JavaScript(例如使用NoScript插件),或者在开发者控制台的网络选项卡中检查第一个返回的html文件。