如何获取来自不同主机的表的特定单元格的值

时间:2013-07-23 06:02:59

标签: javascript html html5

正如标题所示..

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

外部网站格式化他们的表格如下:

<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列,然后在我自己的表中显示该值。我该怎么办?

很抱歉,我还没有开始编码,因为我/我们的网站完全取决于我/我们是否能够正常工作。

5 个答案:

答案 0 :(得分: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);
};

答案 1 :(得分:2)

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

可以通过纯js​​(通过ajax / jQuery)执行此操作但仅限于您具有跨浏览器规则和访问文件设置(即:您正在挖掘的其他网站需要提供如果您允许,请参阅https://www.bionicspirit.com/blog/2011/03/24/cross-domain-requests.html以获取更多信息。

某些较旧的浏览器可能会让您逃脱x浏览器请求,但较新的浏览器请求不会。

如果你能解决这个问题,那么jQuery最简单的方法是使用基于CSS的选择器来生成请求(如果你最终可以使用jQuery ajax):

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

 return   cols[col];

}

这将返回指定行的'td'和col no

你可以使用

获得它的价值
getRowData(1,1).html();

希望这会有所帮助

答案 4 :(得分:0)

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

忽略要求您尝试使用AJAX获取外部网站内容的新手的答案。由于浏览器实现了Same Origin Policy,因此无法实现。即,您无法向您网站上的任何其他网站发出AJAX请求。

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

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

由于您没有提及任何服务器端技术,我不能给您任何代码示例。