2

API を使用して Yahoo 検索の結果を出力しようとすると、For ループ カウンターはインクリメントされた値を出力しません。XML は解析されて出力されますが、カウンターは何度も「1」を出力します。

同じコードが Bing API でも問題なく機能します。

for counter1 in range(50):
    try:
        for Result in YahooSearchResultsXML.getElementsByTagName('Result'):
            try:
                Yahoo_PageTitle = Result.getElementsByTagName('Title')[counter1].firstChild.toxml(encoding="utf-8")
            except AttributeError:
                Yahoo_PageTitle = "Sorry, no page title provided..." 
            try:
                Yahoo_PageDesc = Result.getElementsByTagName('Summary')[counter1].firstChild.toxml(encoding="utf-8")
            except AttributeError:
                Yahoo_PageDesc = "Sorry, no page description provided..."
            Yahoo_DisplayURL = Result.getElementsByTagName('DisplayUrl')[counter1].firstChild.toxml(encoding="utf-8")
            Yahoo_URL = Result.getElementsByTagName('ClickUrl')[counter1].firstChild.toxml(encoding="utf-8")
            ##  Print the output to ensure it's working.
            print counter1+1
            print "<br />"
            print "<h2>" + Yahoo_PageTitle + "</h2>"
            print Yahoo_PageDesc + "<br />"
            print Yahoo_DisplayURL + "<br />"
            print Yahoo_URL + "<br />"
            print "<p> ----------------------------------------------------------------------------------------------------------------- </p>"
    except IndexError:
        print "Exiting@IndexError handler"
        break
    Yahoo_Score = counter1 + 1

提案を高く評価しました。このコードはあまりにも長い間見てきました。

4

2 に答える 2

0

上に書かれているように、印刷はfor Result in..ループしています。複数の結果がある場合、同じ内容の複数の行が得られます。

また、tryインデントするべきではありませんか?(これは修正されました)

編集: 収集した情報から、内側のループでそのカウンターをインクリメントする必要があります。あなたが書いた方法(for counter1 in range(50))は、外側のループでそれをインクリメントします。

これを試してください(IDの変更に注意してください):

    counter1 = 0
    try:
        for Result in YahooSearchResultsXML.getElementsByTagName('Result'):
            try:
                Yahoo_PageTitle = Result.getElementsByTagName('Title')[counter1].firstChild.toxml(encoding="utf-8")
            except AttributeError:
                Yahoo_PageTitle = "Sorry, no page title provided..." 
            try:
                Yahoo_PageDesc = Result.getElementsByTagName('Summary')[counter1].firstChild.toxml(encoding="utf-8")
            except AttributeError:
                Yahoo_PageDesc = "Sorry, no page description provided..."
            Yahoo_DisplayURL = Result.getElementsByTagName('DisplayUrl')[counter1].firstChild.toxml(encoding="utf-8")
            Yahoo_URL = Result.getElementsByTagName('ClickUrl')[counter1].firstChild.toxml(encoding="utf-8")
            ##  Print the output to ensure it's working.
            print counter1+1
            counter1 += 1
            print "<br />"
            print "<h2>" + Yahoo_PageTitle + "</h2>"
            print Yahoo_PageDesc + "<br />"
            print Yahoo_DisplayURL + "<br />"
            print Yahoo_URL + "<br />"
            print "<p> ----------------------------------------------------------------------------------------------------------------- </p>"
    except IndexError:
        print "Exiting@IndexError handler"
        break
    Yahoo_Score = counter1 + 1
于 2011-07-18T07:39:15.523 に答える