使用jQuery从特定的文本中提取文本

时间:2012-04-12 20:01:45

标签: javascript jquery ajax

我正在外部页面上运行AJAX查询,并且我只是尝试从County返回数据。我当前的脚本是从所有表格单元格中提取文本,但是我不能为了我的生活,只需简单地拉出县名。

正在运行的当前脚本:

$( ".zipCode" ).each(function( intIndex ){
var zipCodeID = $(this).attr('id');
console.log('http://www.uscounties.org/cffiles_web/counties/zip_res.cfm?zip='+zipCodeID);
$.ajax({
    url: 'http://www.uscounties.org/cffiles_web/counties/zip_res.cfm?zip='+zipCodeID,
    type: 'GET',
    success: function(res) {
        var headline = $(res.responseText).find("p").text();
        console.log(headline);
        $('#'+zipCodeID).empty();
        $('#'+zipCodeID).append(headline);
    }
});
});

正在查询的页面示例: http://www.uscounties.org/cffiles_web/counties/zip_res.cfm?zip=56159

这适用于所有输入的ZIPS。页面布局是一样的,我只是无法获得只返回县的功能。任何帮助或建议都会很棒。谢谢!

2 个答案:

答案 0 :(得分:4)

由于该页面上完全缺少idclass,因此您无需继续进行操作。如果您有权访问该页面的来源,请在单元格上粘贴idclass,让您的生活变得更加轻松。如果没有,您将必须使用您对页面结构的了解来查找该县。这样的东西将特别适用于您链接到的那一页。如果其他页面有轻微变化,则会失败:

var headline = $(res.responseText).find("table > tr:eq(2) > td:eq(3)").text();

这假设页面上只有一个表,并且该县总是位于第二行的第三个单元格中。

答案 1 :(得分:0)

你基本上是屏幕抓取。我不知何故认为由于跨域和其他问题你会遇到这个问题,但这是问题的辅助。

您需要浏览结果页面。假设屏幕上只有一个页面,它看起来就像这样:

var retVal = [];

// Basically, for each row in the table...
$('tr').each(function(){
    var pTR = $(this);

    // Skip the header row.
    if (pTR.find('th').length == 0)
    {
        // This is the array of TDs in the given row.
        var pCells = $('td', pTR);
        retVal.push({state:$(pCells[0]).text(), place:$(pCells[1]).text(), county:$(pCells[2]).text()});
    }
});
// retVal now contains an array of objects, including county.
if (retVal.length > 0) 
{
    alert(retVal[0].county);
}
else
{
    alert('Cannot parse output page');
}

解析代码被编写为可扩展,因此您可以获取所有数据。有了邮政编码,虽然你可能只会回到一个县,但你肯定会找回更多的地方。另请注意......并非每个邮政编码都有附加县的原因有多种,但在这种情况下你应该找回一个空字符串。