Javascript 将表提取为JSON对象
我有一个解析网站的代码。现在我需要从网页中提取一个特定的表。我的代码如下:Javascript 将表提取为JSON对象,javascript,json,Javascript,Json,我有一个解析网站的代码。现在我需要从网页中提取一个特定的表。我的代码如下: <html> <head> <title>Pricing </title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdnjs.cloudflare.com
<html>
<head>
<title>Pricing </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>
<script>
//$(function(){
function requestCrossDomain(site, callback) {
if (!site) {
alert('No site was passed.');
return false;
}
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=?';
$.getJSON(yql, cbFunc);
function cbFunc(data) {
if (data.results[0]) {
data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
window[callback](data);
} else throw new Error('Nothing returned from getJSON.');
}
}
//$('#test').click(function(){
var url = 'https://www.emcsg.com/marketdata/priceinformation';
requestCrossDomain(url, 'someFunction');
function someFunction(results){
console.log(results);
$('#loadedContent').css("display","").html(results);
}
</script>
</head>
<body>
<br><br>
<div id="result"></div>
<div id="loadedContent"></div>
</body>
</html>
解析的网页是
该网页有几个表,但我需要提取一个特定的表视图。我查看了页面,该表嵌套在各种类中。是否有一种提取表格的简单方法?如下:
var html = $(results);
var table = html.find(".view72PeriodsWrapper");
或者当你在评论中改变主意时:
var table = html.find(".realtimeTableContainer");
见行动:
//$function{
函数requestCrossDomainsite,回调{
如果!站点{
“未通过任何站点”警报;
返回false;
}
var yql=http://query.yahooapis.com/v1/public/yql?q=“+encodeURIComponent”从html中选择*,其中url=”+site+“+”&format=xml&callback=?”;
$.getJSONyql,cbFunc;
函数cbFuncdata{
如果是数据。结果[0]{
数据=数据。结果[0]。替换/]*>[\s\s]*?/gi;
窗口[回调]数据;
}否则抛出新错误“getJSON未返回任何内容”;
}
}
//$“测试”。单击函数{
var url='1〕https://www.emcsg.com/marketdata/priceinformation';
requestCrossDomainurl,“someFunction”;
函数someFunctionresults{
var html=$results;
var table=html.find.realtimeTableContainer;
$'loadedContent'.cssdisplay,.htmltable;
}
.realtimeTableHeaderContainer{display:none}
这是:
var html = $(results);
var table = html.find(".view72PeriodsWrapper");
或者当你在评论中改变主意时:
var table = html.find(".realtimeTableContainer");
见行动:
//$function{
函数requestCrossDomainsite,回调{
如果!站点{
“未通过任何站点”警报;
返回false;
}
var yql=http://query.yahooapis.com/v1/public/yql?q=“+encodeURIComponent”从html中选择*,其中url=”+site+“+”&format=xml&callback=?”;
$.getJSONyql,cbFunc;
函数cbFuncdata{
如果是数据。结果[0]{
数据=数据。结果[0]。替换/]*>[\s\s]*?/gi;
窗口[回调]数据;
}否则抛出新错误“getJSON未返回任何内容”;
}
}
//$“测试”。单击函数{
var url='1〕https://www.emcsg.com/marketdata/priceinformation';
requestCrossDomainurl,“someFunction”;
函数someFunctionresults{
var html=$results;
var table=html.find.realtimeTableContainer;
$'loadedContent'.cssdisplay,.htmltable;
}
.realtimeTableHeaderContainer{display:none}
请在问题末尾添加传递给cbFunc的数据示例。另外:为什么需要yahoo?如果你得到了整个html,为什么不直接请求页面?请在问题末尾添加传递给cbFunc的数据示例。另外:为什么需要yahoo?为什么不直接请求页面,如果你得到了整个html?这很有帮助。但是有没有办法消除表格的标题和数据下面的行?我只需要数据。谢谢。对不起,这个问题可能很傻,但我是个新手,我真的不知道。是的,虽然不是这个问题。请看我的更新答案。这很有帮助。但是有办法解决eli吗删除表格的标题和数据下面的行?我只需要数据。谢谢。对不起,这个问题可能很傻,但我是个新手,我真的不知道。是的,虽然这不是问题。请参阅我的更新答案