0

csquery は初めてで、以下のような html のクロールに問題があります。

<li id="Ingredient">
    <span id="Amount" class="ingredient-amount">1 pound</span>
    <span id="Name" class="ingredient-name">sweet Italian Sausage
</li>
<li id="Ingredient">
    <span id="Amount" class="ingredient-amount">3/4 pound</span>
    <span id="Name" class="ingredient-name">lean ground beef</span>
</li>

span タグ内のテキストを取り出して、次のようにフォーマットします。

1 pound sweet Italian sausage
3/4 pound lean ground beef

これは以下の私のコードです:

for (int i = 0; i < dom.Select("#Ingredient").Length; ++i) {
    if (dom.Select("#Ingredient span#Amount")[i] != null)
            Console.WriteLine(dom.Select("#Ingredient span#Amount")[i].InnerHTML + " ");
    if (dom.Select("#Ingredient span#Name")[i] != null)
            Console.WriteLine(dom.Select("#Ingredient span#Name")[i].InnerHTML);
    Console.WriteLine(Environment.NewLine);
}

上記の html では問題なく動作しますが、スパンの 1 つが欠落している場合に問題が発生します。たとえば、<span id="lblIngName" class="ingredient-name">sweet Italian sausage</span>が html にない場合、私のコードは次を返します。

1 pound lean ground beef
3/4 pound

ご覧の通り、lean ground beef上がりました。なんとしても言いたい3/4 pound。そして1 pound一人で泊まれます。どうやってやるの?私は多くの方法を試しましたが、うまくいきませんでした。だから私は次のようなことをしたい: for each "#Ingredient" write the "#Amount" if it exists or "#Name" if it exists. Do not bother with things on another Ingredient

4

0 に答える 0