正如标题所示..
我正在尝试从外部网站的表格中收集特定的单元格信息。我想在我自己的表格单元格中显示该值。这是在诸如按下“更新”按钮之类的事件上完成的。
外部网站格式化他们的表格如下:
<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列,然后在我自己的表中显示该值。我该怎么办?
很抱歉,我还没有开始编码,因为我/我们的网站完全取决于我/我们是否能够正常工作。
答案 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
来包含来自其他网站的网页,但我也不建议这样做。
您最好的选择是依靠服务器端技术来获取有问题的页面,然后解析它并获得您需要的值。
由于您没有提及任何服务器端技术,我不能给您任何代码示例。