2016-04-06 3 views
1

Я уже написал скрипт, который открывает Firefox с URL-адресом, очищает данные и закрывает их. Страница принадлежит игровому сайту, где содержимое страницы обновляется через Ajax.Python Selenium: Как получить свежие данные со страницы периодически обновляется?

Теперь одним из способов является получение этих запросов AJAX и получение данных или обновление страницы через определенный период времени в открытом браузере.

Для более позднего случая, как мне это сделать? Должен ли я вызвать метод через определенный период времени или что?

ответ

0

Вы можете реализовать так называемый smart wait.

  1. Укажите наиболее часто обновляя и полезным для Вас веб-элемент на странице
  2. Получить данные из него с помощью JavaScript, так как модель DOM не будет обновляться без обновления страницы, например:

    driver.execute_script('document.getElementById("demo").innerHTML')

  3. Подождите некоторое время, получите его снова и сравните с предыдущим результатом. Если изменено - обновить страницу, получить данные и т. Д.

+0

Будет ли нуждаются в обновлении страницы или селен получит * обновлено * DOM? Что-то вроде этого? http://scrolltest.com/python/using-wait-with-selenium-in-python/ – Volatil3

+0

@ Volatil3, nope, модель DOM не будет обновляться. Спасибо, за хороший вопрос. Я обновил свой ответ. Пожалуйста, поделитесь со мной результатом после расследования –

0

Для этого вы можете использовать библиотеку времени. Например:

import time 
from selenium import webdriver 

driver = webdriver.Firefox() 

while <condicion>: 
    driver.get("http://www.url.org") 
    # extract and save data 
    time.sleep(5000) # whaits 5000 seconds 

driver.close() 
0

Обязательно позовите findElement() снова после ожидания Ъс иначе вы не могли бы получить свежий экземпляр. Или используйте фабрику страниц, которая будет получать новую копию WebElement для вас каждый раз, когда к экземпляру обращаются.

+0

Пожалуйста, уточните? – Volatil3

0

Попробуйте обновить страницу по времени, чтобы получить обновленный результат.

driver.navigate().refresh(); 

Чтобы обновить страницу в течение периода времени, см ссылки ниже: -

Running a python script for a user-specified amount of time?

Надеется, что это поможет :)

Смежные вопросы