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

How to get value of a specific cell of a table thats from a different host

本文关键字:主机 单元格 何获取 获取      更新时间:2023-09-26

如标题所示。。

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

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

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

对不起,我还没有开始编码,因为我的整个网站取决于我/我们是否能做到这一点。

使用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);
};

您需要通过服务器语言库(即:通过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包装集。

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

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

好吧,你可以使用jquery并像这样进行

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

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

你可以使用获得它的价值

getRowData(1,1).html();

希望这对有帮助

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

忽略来自新手的答案,他们要求你尝试AJAX来获取外部网站的内容。这是不可能的,因为浏览器实现了同源策略。即,您不能从您的网站向任何其他网站提出AJAX请求。

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

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

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