Выполнение запросов Python последовательно возвращает старые данные веб-сайта - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь определить, когда сайт обновляется.Я сделал это, создав две переменные и запросив одинаковые данные сайта в каждой.Затем сравнивая их в цикле while, обновляя одну переменную в каждой итерации цикла (см. Код ниже).HTML сайта фактически меняется каждую минуту, так как время на сайте меняется.Таким образом, вы ожидаете, что цикл заканчивается каждую минуту.

К сожалению, сайт, похоже, отправляет одни и те же исходные данные для каждого дополнительного запроса, и поэтому цикл while не завершается.Чтобы воспроизвести проблему, запустите приведенный ниже код пару раз, а затем просмотрите время в HTML (origsite [4050: 4114]), чтобы узнать, текущее ли это время или время, когда вы впервые запустили блок кода..

import time
import random
import sys
import requests

site = requests.get("http://www.supremenewyork.com/shop/all/").text
origsite = requests.get("http://www.supremenewyork.com/shop/all/").text

n = 1

while (origsite == site): 
    x = round(random.uniform(0.8,1.2),3)
    time.sleep(x)
    origsite = requests.get("http://www.supremenewyork.com/shop/all/").text
    print(n)
    n = n + 1
print("site changed")

Это известная проблема с запросами?Или сайт отправляет старую информацию специально?Я попытался с помощью VPN изменить свой IP, и он все еще возвращает старые данные.Есть ли другой способ проверить, изменился ли сайт?Ниже приведен пример использования старых данных.origsite хранит данные за 5 минут до запуска данных сайта.

origsite[4050:4114]
Out[94]: b'ime data-timezone-offset="3600"><b>04/06/2018 03:11am</b> <span '

site[4050:4114]
Out[95]: b'<b>04/06/2018 03:16am</b> <span id="time-zone-name">LDN</span></'

1 Ответ

0 голосов
/ 17 июня 2018

К сожалению, не было решения Selenium / запросов.Я решил проблему с помощью браузера от Splinter.Скорректированный код ниже:

from splinter import Browser
browser = Browser('firefox')
browser.visit(mainUrl + cat)
origsite = browser.html
site = browser.html

n = 1

while (origsite == site): 
    x = round(random.uniform(0.8,1.2),3)
    time.sleep(x)
    origsite = browser.html
    print(n)
    n = n + 1
print("site changed")
...