1

私はxPathを使用して新聞のコードを(練習のために)トラバースしようとしています。現在、主要な記事、写真、およびそれについての簡単な説明を取得したいと思います。しかし、私はこれまでのところxPathにそれほど熟練しておらず、簡単な説明にたどり着くことができません。

このコードで:

<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 [@ class='fondoprincipal']<-メインの画像とキャプションを表示します

// a [@ class ='cabezaprincesto'] / text()<-記事のタイトルを教えてください

しかし、class = "resumenesto"のdivである小さな説明を取得できません。同じIDが残りのHTMLで何度も使用されているため、そのIDで何も取得しようとしませんでした。余分なアイテムがたくさん。

どうすればこの特定のものを入手できますか?それでは、別のWebページに解析するための良い方法を教えてくれる人はいますか?私はおそらくphpがそれらの値を使用していくつかのhtmlを書くことを考えていましたが、私は本当にわかりません...


編集

「この特定のもの」とは、div class="fondoprincipal"内にあるこのdivclass="resumenesto"を取得する方法です。..


編集2

ありがとうございます。xPathトラバーシングがもう少し明確になりました。しかし、私の2番目の質問について、別のWebページに解析するための良い方法を教えてくれる人はいますか?私はおそらくphpがそれらの値を使用していくつかのhtmlを書くことを考えていましたが、私は本当にわかりません。

4

3 に答える 3

2

あなたはresumenestoの「id」と言いますが、あなたのコード例では、あなたが話しているdivにはresumenestoのクラスがあります。

さらに、次のような xpath を使用する場合:

//div[@class='resumenesto']

取得しているのは、その xpath に一致するノードのリストです。したがって、そのリスト内の 1 つの項目のみを具体的に参照する場合は、リスト内のどの項目を指定する必要があります。

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

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

詳細については、W3Schools の XPath 構文の概要を参照してください。

編集:

「fondoprincipal」内にある div を取得するには:

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

これは xpath に、ドキュメント内でクラスが fontoprincipal の子孫 div を見つけ、その div 内でクラス resumenesto を含む子孫 div を見つけるように指示します。

于 2009-03-21T19:49:16.820 に答える
0

テストするには、次のことが必要です。

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

テキストを取得するのはその要素であるため、 a (ラウルが提案したように div ではなく) を取得することに注意してください。

ページへの配置に関しては、asp.netで実行できます。XElement を使用して値を読み込み、次に XPathSelectElement を使用して値を取得します ( http://msdn.microsoft.com/en-us/library/bb156083.aspx )。

于 2009-03-21T21:26:23.293 に答える
0

また、検索を絞り込むために、div も追加できます。

//div[@class='resumenesto']/a[@class='resumenesto']/text()
于 2009-03-21T20:48:15.290 に答える