2009-03-21 9 views
1

私はxPathを使って新聞のコードを辿っています(実際には練習のために)今は主な記事を入手したいと思います。しかし、私はこれまでxPathに熟練した人ではなく、小さな記述には手を出すことができません。xPath Traversing

このコードwithing:私は(またはキャプションなし)画像を取得したい、その後、記事のタイトルまし

<div class="margenesPortlet"> 

<div class="fondoprincipal"> 
<div class="margenesPortlet"> 
<a href='notas/n1092329.htm' ><img id="LinkNotaA1_Foto" src="http://i.oem.com.mx/5cfaf266-bb93-436c-82bc-b60a78d21fb6.jpg" height="250" width="300" border="0" /></a> 

<div class="piefoto_esto">Un tubo de 12 pulgadas al lado de la Vialidad Sacramento que provoc&#243; el corte del servicio durante toda la ma&#241;ana y hasta alrededor de las cuatro de la tarde. Foto: El Heraldo de Chihuahua</div> 

<div class="cabezaprincesto"><a href='notas/n1092329.htm' class='cabezaprincesto' >Sin agua 8 mil usuarios</a></div> 
<div class="resumenesto"><a href='notas/n1092329.htm' class='resumenesto' >La ruptura de una l&#237;nea en el tanque de rebombeo de agua Sacramento dej&#243; sin servicio a ocho mil usuarios, en once colonias del sur de la ciudad. </a></div> 
</div> 
</div> 

</div> 

を。私が使用して取得することができ、これら3つの事:

// divの[クラス@ = 'fondoprincipal'] < - 私のメイン画像を提供し、キャプション

// [@クラス= 'cabezaprincesto'] /テキスト()< - 私に記事のタイトルを教えてください

しかし、私はclass = "resumenesto"のdivである小さな記述を得ることができません。 idはHTMLの残りの部分で繰り返し使用されるので、余分なアイテムがたくさん返されます。

この特定のものを取得するにはどうすればよいですか?あなたの誰かが私に別のWebページにそれを解析する良い方法をお勧めしますか?私は編集は、私が「この特定の1」の意味することは、私はこれをどのように入手できますされ


...多分PHPこれらの値を使用して、いくつかのHTMLを書いたが、私は本当にわからないと考えていましたdivクラス= "resumenesto"、DIV CLASS = "fondoprincipal" 内に存在する1 ...


編集2

ありがとう、xPathのトラバースはもう少し明確です。しかし、私の2番目の質問については、他のウェブページにそれを解析する良い方法をお勧めしますか?私はおそらくそれらの値を使用していくつかのHTMLを書く考えているが、私は本当にはわからない。

+0

他のウェブページに解析する良い方法はどういう意味ですか? – Alekc

答えて

2

あなたはresumenestoの "id"と言うが、あなたのコード例ではあなたが話しているdivはresumenestoあなたはこのような何かのXPathを使用する場合

さらに、:

//div[@class='resumenesto'] 

は何を取得していると、そのXPathを一致するノードのリストがあります。 あなたは特にそのリスト内の単一の項目のみを参照したいのであれば、あなたは、リスト内のどの項目を指定する必要があります。

さらに
//div[@class='resumenesto'][1] 

、あなたは「この特別な1」とはどういう意味ですか? xpathの特異性を伝える唯一の方法は、例えば「他のdiv内にあるクラスresumenestoを持つdiv」または「class resumenestoを持つdivの最初のもの」などのコンテキストを与えることです。

さらに詳しい情報はW3Schools' overview of XPath syntaxをご覧ください。

編集:

div要素は "fondoprincipal" 内にある得るために:

//div[@class='fondoprincipal']//div[@class='resumenesto'] 

これは、文書内のクラスfondoprincipalと任意の子孫のdivを見つけるために、XPathを伝え、そのdivの内、いずれかの子孫を見つけますクラスresumenestoとdiv。

+0

申し訳ありませんが私は間違って書いた、私は自分のコードを編集する – Tsundoku

+0

あなたの変更を反映する答えを更新しました。 – Rahul

0

そして、あなたの検索を絞り込むために、あなたはあまりにもdivの追加することができます。

//div[@class='resumenesto']/a[@class='resumenesto']/text() 
0

が必要にテストにそれを得るために:

//div[@class='fondoprincipal']//a[@class='resumenesto'] 

(注)(isnteadを取得したいですRaulが示唆したようにdivの)、その要素の中でテキストを取得するからです。

ページに載せることに関しては、asp.netで行うことができます。 XElementを使用して値をロードし、次にXPathSelectElementを使用して値(http://msdn.microsoft.com/en-us/library/bb156083.aspx)を取得します。