0

正如标题所读..

我正在尝试从外部网站的表格中收集特定的单元格信息。然后我想在我自己的表格单元格中显示该值。这是在诸如按下“更新”按钮之类的事件上完成的。

外部站点的表格格式如下:

<table class="data-table">
        <tr>
            <td class="label">jhgjghgf:</td>
            <td class="data">0.20079</td>
            <td class="spacer"><span></span></td>
            <td class="label">hdfxshgx:</td>
            <td class="data">-0.383</td>
        </tr>
        <tr>
            <td class="label">kjhgk:</td>
            <td class="data">90.008</td>
            <td class="spacer"><span></span></td>
            <td class="label">kjhg:</td>
            <td class="data">N/A</td>               
        </tr>
</table>

假设我试图只收集第 2 行第 2 列,然后在我自己的表中显示该值。我能做些什么?

抱歉,我还没有开始编码,因为我的整个网站都取决于我/我们是否可以让它工作。

4

5 回答 5

2

使用 jQuery,您可以按如下方式获取此值:

$('.data-table tr:nth-child(2) td:nth-child(2)').text()

如果你想通过 AJAX 请求外部站点的表,然后从表中获取值,你可以这样做:

$.get(<url of external site>).function(result) {
     var value = $(result).('.data-table tr:nth-child(2) td:nth-child(2)').text();
     // now add this value to your table, e.g. $('.my_table td')[0].text(value);
};
于 2013-07-23T06:33:15.703 回答
2

您将需要通过服务器语言库来执行此操作(即:通过 Coldfusion http() 或 PHP HttpRequest() )。

可以通过纯 js(通过 ajax/jQuery)执行此操作,但前提是您具有跨浏览器规则并设置访问文件(即:您正在挖掘的其他站点需要授予您权限,请参阅https://www. bionicspirit.com/blog/2011/03/24/cross-domain-requests.html了解更多信息)。

一些较旧的浏览器可能会让您摆脱 x-browser 请求,但较新的浏览器不会。

如果你能解决这个问题,那么 jQuery 将是最简单的,从结果请求中使用其基于 CSS 的选择器(如果你最终可以使用 jQuery ajax):

myData = $('.data-table tr:nth-child(2) td:nth-child(2)');

这将获得任何第 2 行、第 2 个表格单元格元素作为 jQuery 包装集。

于 2013-07-23T06:33:40.483 回答
1

我会在服务器端这样做。您必须在其他主机上请求 html 页面,找到您想要的单元格并将其发送回您的网站。

我不知道你使用的是什么语言,但你可以很容易地找到一些允许你解析 html 的库,就像你在 jquery 中所做的那样,但让我们在 php 中说。

于 2013-07-23T06:25:20.737 回答
0

您在这里尝试实现的目标被认为是危险的,应该避免。

忽略新手要求您尝试 AJAX 以获取外部站点内容的答案。由于浏览器实施了同源策略,这是不可能的。即,您不能从您的站点向任何其他网站发出 AJAX 请求。

有一些方法可以包含来自其他网站的页面,iframes但我也不建议这样做。

您最好的选择是依靠服务器端技术来获取有问题的页面,然后对其进行解析并获取您需要的值。

由于您没有提到任何服务器端技术,因此我无法给您任何代码示例。

于 2013-07-23T07:29:27.977 回答
0

好的,您可以使用 jquery 并像这样继续

function getRowData(row,col)
{
  var rows = $('.data-table tr');
  var cols =$(rows[row],'td');

 return   cols[col];

}

这将返回您'td'指定的行和列号

你可以使用它来获得它的价值

getRowData(1,1).html();

希望这可以帮助

于 2013-07-23T06:26:04.040 回答