1

我在外部页面上运行 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。页面布局相同,我只是无法获得仅返回县的功能。任何帮助或建议都会很棒。谢谢!

4

2 回答 2

4

由于该页面上完全没有ids 和classes,因此您实际上没有太多工作要做。如果您可以访问该页面的来源,请在单元格上粘贴idclass,让您的生活变得更轻松。如果没有,您将不得不使用您对页面结构的了解来查找县。这样的事情将特别适用于您链接到的那个页面。如果其他页面有细微的变化,这将失败:

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

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

于 2012-04-12T20:21:49.460 回答
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');
}

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

于 2012-04-12T20:21:43.187 回答