2012-04-12 23 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

結果に何かが得られますか?クロスドメインアヤックスのルールのため、私はあなたが何かを得るとは思わないでしょう。あなたが現在のコードから何かを得ることができるならば、私はルートがありますが、興味がありますか? –

+0

はい、現在のスクリプトを使用して、ページからすべてのテキストを取り出すことができました。 – xxdrivenxx

答えて

4

このページにはidclassが完全にないため、実際にはあまり進んでいません。そのページのソースにアクセスできる場合は、idまたはclassをセルに貼り付け、あなたの人生をはるかに簡単にします。そうでない場合は、郡を見つけるためにページの構造について知っているものを使用しなければなりません。このようなものは、あなたがリンクしたその1つのページで具体的に動作します。他のページは、わずかな変化を持っている場合、これは失敗します。これは、これまで1台だけのページに及び郡は2行目の3番目のセルに常にあることがあることを前提としてい

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

+0

ありがとう!それが私の必要なすべてです。シンプルで、私は働くために必要な一度のスクリプトのために素晴らしい作品。 – xxdrivenxx

+0

以下の私の注記に...郵便番号には複数の郡が含まれることに注意してください。それがあなたにとって重要なのであれば、それを考慮する必要があります。 –

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

:しか1ページが画面上に存在していると仮定すると、それはこの何かのように見えます。郵便番号では、あなたはおそらく1つの郡を返すことになりますが、あなたは間違いなくより多くの場所を返すでしょう。また、すべての郵便番号にはさまざまな理由で郡が添付されているわけではありませんが、その場合は空の文字列を返すべきです。

関連する問題