我正在外部页面上运行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。页面布局是一样的,我只是无法获得只返回县的功能。任何帮助或建议都会很棒。谢谢!
答案 0 :(得分:4)
由于该页面上完全缺少id
和class
,因此您无需继续进行操作。如果您有权访问该页面的来源,请在单元格上粘贴id
或class
,让您的生活变得更加轻松。如果没有,您将必须使用您对页面结构的了解来查找该县。这样的东西将特别适用于您链接到的那一页。如果其他页面有轻微变化,则会失败:
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');
}
解析代码被编写为可扩展,因此您可以获取所有数据。有了邮政编码,虽然你可能只会回到一个县,但你肯定会找回更多的地方。另请注意......并非每个邮政编码都有附加县的原因有多种,但在这种情况下你应该找回一个空字符串。