2013-05-16 1 views
4

Мы ждем результата моей сестры. И, как это бывает, много, с индийским правительством. сервер медленный, трафик тяжелый.Как написать скрипт python для продолжения попытки веб-страницы до ее открытия

Итак, я подумал о написании программы python, чтобы продолжать попытки, пока сервер не ответит на запрос Http. Но программа:

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, он все еще печатает номера.

Кроме того, что бы я хотел, для достижения этого, если сервер отвечает, веб-страница загружает файлы 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" 

Но все это, это открывает новое окно в моем веб-браузере по умолчанию, и задает URL-адрес для того, что дано, и «открывает его». Между тем, печать Done и Check на оболочке python.

Веб-браузер, не получивший ответа от сервера, отображает could not connect to www.nbe.gov.in.

Как достичь этого?

EDIT: Просто видел, что скрипт facebook.com работал в конце концов. Это заняло около 15 попыток, а потом это случилось. Файл .html написан правильно. Со всеми CSS и, вероятно, JS тоже.

Почему это так, что потребовалось так много попыток, в то время как я могу легко открыть facebook.com из браузера.

+0

ooo .. Обновление библиотеки. Кстати, что же все лучше? – tMJ

+0

Хм. странный. Код работает на моей машине – Lennart

+0

он работает? Открывается ли сайт? Какой граф? : D вы можете проверить результат для нас? – tMJ

ответ

2

0: selenium попытка.

Идея состоит в том, чтобы продолжать открывать страницу, пока водитель не увидит правильный заголовок. И если он там, просто сломайте петлю и оставьте страницу открытой:

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 

Надеюсь, что это поможет.

+0

Selenium? Куда я могу отменить это? – tMJ

+0

Просто прочитайте [docs] (http://selenium-python.readthedocs.org/en/latest/installation.html), его следует легко установить. – alecxe

+1

@TehTris это не то, что подразумеваемые ожидания делают. –