Добрый день друзья. Пытаюсь получить код страницы с целью вытащить наименования кабелей со всех страниц. Но вместо HTML-кода, в котором содержатся эти списки мне выдаёт вот такой результат: <html><head><script>function set_cookie(){var now = new Date();var time = now.getTime();time += 19360000 * 1000;now.setTime(time);document.cookie='beget=begetok'+'; expires='+now.toGMTString()+'; path=/';}set_cookie();location.reload();;</script></head><body></body></html> Направьте на путь истинный что именно я упустил из виду. Для формирования использовал хром F12 и плюсом расширение Live HTTP Headers, но не смог ни к чему подкопаться.
Скрытый текст
Код
Sub Cable()
Dim XMLHTTP As Object
Dim Myurl$, Txt$
Myurl = "https://e-kc.ru/price/cable-vvgng-ls?page=1"
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP") 'MSXML2.XMLHTTP
XMLHTTP.Open "GET", Myurl, 0
XMLHTTP.setRequestHeader "accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
XMLHTTP.setRequestHeader "DNT", "1"
XMLHTTP.setRequestHeader "Upgrade-Insecure-Requests", "1"
XMLHTTP.setRequestHeader "cache-control", "max-age=0"
XMLHTTP.setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
XMLHTTP.send
If XMLHTTP.Status = 200 Then
Txt = XMLHTTP.responseText
Debug.Print Txt
Else
MsgBox "Отсутствует соединение..."
End If
'Set XMLHTTP = Nothing
End Sub
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
PooHkrd, спасибо, но меня цены наоборот не интересует. Я хотел получить список названий в одном столбце а в другом ссылку на это название, т.е. на страницу. P.S. PQ у меня нет.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Игорь, большое спасибо. Помогла строчка. Могли бы поделиться в каких случаях это пишется? Или это уже просто опыт?
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
В HTML коде в вашем первом посте присутствует скрипт set_cookie с командой document.cookie='beget=begetok' После чего страница перезагружается Это такая примитивная защита от парсеров (проверка на браузер)
Это особенность конкретного движка сайта, на разных сайтах порой такая штука встречается.
Игорь, спасибо за полезную информацию и за решение моей проблемы.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Добрый день. Снова поднимаю тему. Не могу побороть этот сайт. Снова выдаёт не то, что нужно: <html><head><script>function set_cookie(){var now = new Date();var time = now.getTime();time += 19360000 * 1000;now.setTime(time);document.cookie='beget=begetok'+'; expires='+now.toGMTString()+'; path=/';}set_cookie();location.reload();;</script></head><body></body></html> И строчка имеется, которую Игорь советовал добавить, а результата нет. Не могу выгрузить HTML-код правильный.
Скрытый текст
Код
Sub Cable()
Dim XMLHTTP As Object
Dim Myurl$, Txt$
Myurl = "https://e-kc.ru/price/cable-vvgng-ls?page=1"
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP") 'MSXML2.XMLHTTP
XMLHTTP.Open "GET", Myurl, 0
XMLHTTP.setRequestHeader "accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
XMLHTTP.setRequestHeader "DNT", "1"
XMLHTTP.setRequestHeader "Upgrade-Insecure-Requests", "1"
XMLHTTP.setRequestHeader "cache-control", "max-age=0"
XMLHTTP.setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
XMLHTTP.setRequestHeader "Cookie", "beget=begetok"
XMLHTTP.send
If XMLHTTP.Status = 200 Then
Txt = XMLHTTP.responseText
Debug.Print Txt
Else
MsgBox "Отсутствует соединение..."
End If
'Set XMLHTTP = Nothing
End Sub
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
вроде заработало. Не знаю на долго ли.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
А вообще интересно получается. На работе на W7 x64 Office 2013 x64 запускаю со строчкой
Код
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
и всё работает. Дома на W7 х86 Office 2010 x86 не работает с вышеуказанной строчкой, но работает со строчкой
Код
Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Что-то видимо не так происходит.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Да, всё знать невозможно. Каждый день что-то новое нахожу даже в тех местах где уж вроде всё понятно.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.