4

姉の結果待ちです。そして、たまたま、インド政府と多くのことをしました。サーバーが遅く、トラフィックが重い。

そこで、サーバーが Http リクエストに応答するまで試行を続ける Python プログラムを作成することを考えました。しかし、プログラム:

import urllib
i=1
f = open("C:/Users/DELL/Desktop/neetpg.html",'w')
while(True):
    try:
        page = urllib.urlopen("http://www.nbe.gov.in/asr/neet_pdf/")
        print "Done"
        break
    except:
        print i
        i += 1
        continue
f.write(page.read())

print "check"

しかし、プログラムは、正しく実行されません。URL を に置き換えてみましたがfacebook.com、それでも数字が出力されます。

さらに、私が望むのは、サーバーが応答した場合、Web ページが js ファイルと css ファイルを html ファイルとともにロードし、これらすべてがブラウザーで開かれるようにすることです。

http://docs.python.org/2/library/webbrowser.htmlからもヒントを得て 、プログラムを次のように変更しました。

import webbrowser
i=1
while(True):
    try:
        webbrowser.open("http://www.nbe.gov.in/asr/neet_pdf/")
        print "Done"
        break
    except:
        print i
        i += 1
        continue
print "check"

しかし、これはすべて、デフォルトの Web ブラウザで新しいウィンドウを開き、URL を指定されたものに設定して「開く」だけです。その間、PythonシェルでDoneとCheckを印刷します。

サーバーからの応答を受信して​​いない Web ブラウザには、 が表示されますcould not connect to www.nbe.gov.in

これを達成する方法は?

編集:結局、facebook.com スクリプトが機能することがわかりました。約15回試行した後、それが起こりました。ファイルは.html正しく書き込まれます。すべての CSS とおそらく JS も。

ブラウザから簡単にfacebook.comを開くことができるのに、なぜそんなに多くの試行が必要なのですか。

4

1 に答える 1

2

セレンを試してみてください。

アイデアは、ドライバーが正しいタイトルを見るまでページを開き続けることです。そこにある場合は、ループを中断してページを開いたままにします。

from selenium import webdriver


driver = webdriver.Firefox()
while True:
    driver.get("http://www.nbe.gov.in/asr/neet_pdf/")

    if 'NEET-PG' in driver.title:
        break

それが役立つことを願っています。

于 2013-05-16T21:39:59.330 に答える