Я пытаюсь очистить несколько динамических сайтов, используя Splash for Scrapy в python. Однако я вижу, что Splash не может дождаться загрузки полной страницы в определенных случаях. Скорее всего, для решения этой проблемы необходимо добавить большое время wait
(например, 5 секунд в нижеприведенном фрагменте). Однако это крайне неэффективно и по-прежнему не загружает определенные данные (иногда загрузка занимает более 5 секунд). Есть ли какое-то условие ожидания для элемента, которое может быть выполнено через эти запросы?Добавление ожидания для элемента при выполнении SplashRequest в python Scrapy
yield SplashRequest(
url,
self.parse,
args={'wait': 5},
'User-Agent':"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
}
)
Чтобы добавить к решению, я получал Lua-ошибки, в которых указывалось «попытка индексировать значение nil» при запуске вышеуказанного скрипта. Проблема заключалась в том, что ': exists()' не может быть запущено на значение 'nil', возвращаемое' splash: select ('. My-element') 'incase, что элемент еще не был отображен. Поэтому просто избавиться от части ': exists()' и проверить цикл для 'while not splash: select ('. My-element') действительно решает проблему для меня. – NightFury13
Хороший улов @ NightFury13! Я меняю пример, так что люди, которые приходят на этот ответ в будущем, не получат эту проблему. –