2012-04-12 186 views
1

我在外部頁面上運行AJAX查詢,並試圖只返回縣的數據。我目前的腳本是從所有表格單元中拉出文本,但是我不能在我的生活中簡單地拉取縣名。使用jQuery從特定的文本中提取文本​​

是正在運行的當前腳本:

$(".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

這應該全部進入拉鍊工作。頁面佈局是一樣的,我只是不能得到只返回縣的功能。任何幫助或建議都會很棒。謝謝!

+0

在你的結果中你會得到什麼?由於跨域阿賈克斯規則,我不會想象你會得到任何東西。如果不是,我有一條路線,但是如果您可以從您當前的代碼中獲得任何內容,我只是有興趣? – 2012-04-12 20:19:59

+0

是的,我可以使用當前的腳本從頁面中提取所有文本。 – xxdrivenxx 2012-04-12 20:33:40

回答

4

由於該頁面上完全沒有id s和class es,所以您並不需要太多工作。如果您有權訪問該頁面的源代碼,請在該單元上粘貼idclass,讓您的生活變得更加輕鬆。如果沒有,你將不得不使用你所知道的頁面結構來找到縣。像這樣的東西將專門在你鏈接到的那一頁上工作。如果其他網頁上有輕微的變化,這將失敗:

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

這假定有頁面始終只表上,該縣始終處於第2行的第3個單元。

+0

謝謝!這就是我需要的。簡單,並且對於我需要工作的一次腳本非常有用。 – xxdrivenxx 2012-04-12 20:32:52

+0

在下面的註釋中注意,一個郵政編碼可以包含多個縣。如果這對你很重要,你應該解釋這一點。 – 2012-04-12 22:12:40

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'); 
} 

解析代碼寫入到可擴展的,因此你找回所有數據。有了郵政編碼,雖然你可能只會回到一個縣,但你一定會找回更多的地方。另請注意......由於各種原因,並非每個郵政編碼都有一個縣,但在這種情況下,您應該返回一個空字符串。

相關問題