我正在为我的工作做一个项目,该项目允许用户解析给定的HTML页面,该页面提供有关潜在客户的信息。然而,我面临的问题是,该网页在一个表中显示这些潜在客户信息,据我所知,该表是通过Javascript函数填充的,因此当Jsoup解析文档时,它无法找到该表或其任何内容。以下是我特别关注的HTML:
<table class="none" align="center" bgcolor="white" border="0" cellpadding="1" cellspacing="0" width="100%">
<tbody><tr class="tm_tt_ftr1">
<td class="typedata1"> </td>
<td class="typedata1" colspan="3">Name</td>
<td class="typedata1">Phone</td>
<td class="typedata1x" colspan="2">$$$ Summary </td>
</tr>
<tr class="tm_tt_body">
<td class="typedata1" title="Lookup this name historical"><center>
<a href="#" onclick="javascript:Pop_Up('X','Testerson',
'Testerson','Tes','Test');">
N</a></center></td>
<td class="typedata1" colspan="3"> Testerson, Test </td>
<td class="typedata1">
<b><a href="rtrpt.cgi?DATE_OPT=US_TERSE
&RT_SCRIPT=mkcnt/cnt_lookup_phone_cgi.rt&JDATE=TODAY
&DATE1=TODAY&DATE2=TODAY&QSRC=ALL&DETAIL=N
&QPAC=631&QPRE=384&QPNUM=6191" title="Search phone history this number" target="_new">P1:</a></b>
<a href="rtrpt.cgi?
DATE_OPT=X&RT_SCRIPT=mkcnt/lead_phn_cgi.rt
&LEAD=011876280" title="Additional phone numbers this lead" target="_new">
<b>222-222-2222</b></a>
</td>
<td width="10%">Charge </td>
<td width="10%"> 49.00</td>
</tr>
<tr class="tm_tt_body">
<td class="typedata1" title="Lookup this name historical" colspan="1"><center>
</center></td>
<td class="typedata1" colspan="3"> </td>
<td class="typedata1">
<b> </b>
</td>
<td class="fd_tt_body_neg">Paid </td>
<td class="fd_tt_body_neg" colspan="1"> 49.00</td> <!--This is what I am looking to extract -->
</tr>
<tr class="tm_tt_body">
<td> </td>
<td class="typedata1" colspan="3">9 Daniel Ln </td>
<td class="typedata1" colspan="1">Email
<a id="ld_email" href="mailto:testtesterson@gmail.com?subject='L11876280'">
testtesterson@gmail.com</a>
</td>
<td>Due </td>
<td> 0.00</td>
</tr>
<tr class="tm_tt_body">
<td> </td>
<td class="typedata1" colspan="3"> </td>
<td class="typedata1" colspan="1">CB @ -------</td>
<td class="typedata1" colspan="1"> </td>
<td class="typedata1" colspan="1">1B </td>
</tr>
<tr class="tm_tt_body">
<td class="typedata1"><center> 111</center></td>
<td class="typedata1" colspan="3">Springfield NY 11953</td>
<td class="typedata1" colspan="1">Comm: 1314379</td>
<td colspan="2"><center>DC: ., .</center></td>
</tr>
<tr class="tm_tt_body">
<td class="typedata1" colspan="5"> </td>
<td colspan="2">
</td>
</tr>
</tbody></table>
如上所述,Jsoup根本找不到这个表或它的任何内容。包含此表的div具有如下Javascript函数:
<script language="Javascript">
function UpdateDiv(){
$.ajax({
url: "http://flag.60north.net/cgi-bin/rtrpt_tabpanel2G_New.cgi",
type: 'POST',
async: true,
dataType: 'html',
data: "RT_SCRIPT=telemkt/prime/leadcgiUpDate_New.rt&DATE_OPT=X&DETAIL=N&LNUM=" + $("input#LNUM").val(),
timeout: 90000,
success:
function(retData){
$(".Lead_Info").html(retData);
}
});
}
</script>
根据我的理解,调用这些函数是为了填充表。我想做的是有一种方法来运行这个函数,以便用领导的信息填充页面,然后使用JSoup解析它。从我个人的研究中,我发现Selenium API允许在超文本标记语言文档中执行Javascript函数,然而,我不认为这将解决我的问题。据我所知,无论Selenium运行什么,在连接到url并检索文档时,都不会对JSoup解析超文本标记语言产生影响。显然,如果J汤有能力这样做,我会让J汤运行函数,然后解析,但这不是一个可用的功能。下一个最好的解决方案是什么,以获得这个线索信息显示?
您可以尝试这种方法:
WebDriver driver = new ChromeDriver();
driver.get(url);
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("UpdateDiv();");
然后从WebDriver中提取html并传递给JSoup进行解析和其他操作:
String html = driver.getPageSource();
Document doc = Jsoup.parse(html);
我想解析出这个Nasa页面上的描述,页面底部的文字 我该怎么做?
我需要的是在第二个中获取第二个 的文本,并对表中的每一组 标记执行此操作。
问题内容: 我正在尝试使用jsoup解析HTML。这是我第一次使用jsoup,并且我也阅读了有关它的一些教程。以下是我要解析的HTML表- 如果您看到我的下表,则它现在有3个(我只是为了理解目的将其缩短为3个表行,但总的来说会更多)。现在,我想从我的下表中提取出它的对应信息,例如-我将提取其群集状态及其状态为关闭的所有主机名。 正如你可以看到下面的群集名称,我有两个主机名和其地位,但地位。 因此,
正如您在下面看到的集群名称,我有两个主机名和,其中状态为,但状态为。 因此,我将打印作为集群名,并打印作为主机名,因为它已关闭。使用JSOUP可以做到这一点吗? 到目前为止,我能够使用jsoup提取整个HTML表,但不确定如何提取集群名和主机名- 更新:- 表中可能有两个集群名称,如下所示- 现在,如果您看到上面,我有两个集群名称--一个是,另一个是,所以我想找到所有仅为集群名称关闭的计算机。
我知道在解析HTML表方面有很多问题。然而,在做了一些研究并研究了Jsoup之后,我有点被它难倒了。 我有时间表 我想解析以取出标记的文本,但要保持某种格式。 我更愿意将数据分割成可管理的块。也许我可以做一个? 但是,这意味着没有演讲时间。除非不需要计算空格和计算时间,假设每个空格是15分钟。
问题内容: 这是我必须从中提取值5390.85,5428.15,5376.15和5413.85的HTML源。我想使用jsoup做到这一点。但是我对jsoup比较陌生(今天我开始使用它)。那我该怎么办呢? 我已经使用jsoup提取了网站的内容。但是如何提取我需要的值?提前致谢 问题答案: 尝试这样的事情: 这是打印输出:-