#lua #scrapy #scrapy-splash #splash-js-render
#lua #scrapy #scrapy-splash #заставка-js-render
Вопрос:
————ОРИГИНАЛЬНЫЙ ВОПРОС——————
В моем скрипте Splash я пытаюсь использовать «splash: go» для нового URL-адреса, который основан на атрибуте «src» тега «img». Как я могу получить доступ к этому относительному URL-адресу «src» и присоединить его к start_url?
Например, представьте, что элемент img имеет следующее содержимое:
<img id=»ImageViewer1_docImage» onload=»BlockerResize(‘ImageViewer1_ContentBlocker1′,’ImageViewer1_WaterMarkImage’);» src=»ACSResource.axd?SCTTYPE=ENCRYPTEDamp;SCTKEY=gMYed5OWqcT9I1Y2fM85DvB48X5U1DQ5mOUiJoUH4rioyau0nJdxt0PHFfGVTMiUsork/YD Cw0F6ZzcviP4sG09xrqWM8/zJlyEeVRFkKXVnkyHYWgwNJzCSUE4Kh4yCsqw6mCuIxWxPj6BAI7Hbw==amp;CNTWIDTH=849amp;CNTHEIGHT=684amp;FITTYPE=Heightamp;ZOOM=1 » alt=»Пожалуйста, подождите» style=»ширина границы:0 пикселей; курсор: url (изображения /курсоры /hmove.cur); z-индекс: 1000″>
Здесь я пытаюсь извлечь атрибут src и добавить его в start_url:
https://i2a.uslandrecords.com/ME/Cumberland/D/
Я хочу, чтобы все это было внутри скрипта заставки. Мне нужно, чтобы это было сделано внутри Splash, потому что в противном случае я потеряю свою безопасность / шифрование или что-то в этом роде — вместо новой веб-страницы отображаются «Неверные данные». У вас есть какие-либо рекомендации?
————ОБНОВИТЬ——————
Итак, мне удалось получить нужный URL-адрес из атрибута src, используя следующий код:
var = splash:evaljs("document.getElementById('ImageViewer1_docImage').src;")
splash:go(var)
Однако проблема в том, что это выдает сообщение об ошибке. Все, что я нахожу на снимке, — это белая страница со следующим сообщением:
Ошибка загрузки страницы (загрузка фрейма прервана изменением политики)
Ошибка Webkit # 102
Есть идеи, почему?
Ответ №1:
Атрибут src изображения — это именно тот URL, к которому вам нужен доступ, или, как указано в заголовке вопроса, вам нужно добавить его к некоторым другим частям URL?
Если это так, вы можете сделать это с помощью ‘..’
Например.: splash:go(base_url..var) — конкатенация
Ответ №2:
ПРОБЛЕМА РЕШЕНА:
Вот решение. Запрос GET не работал, потому что он не знал, как отобразить изображение в html с учетом настроек webkit. Если вы выполняете запрос GET без рендеринга страницы, ответ.в теле есть изображение.
код:
local response = splash:http_get(var)
return {
body = response.body
}