Страницы: 1
RSS
При вытягивании данных с интернет-страницы не могу получить правильный HTML код.
 
Добрый день друзья.
Пытаюсь получить код страницы с целью вытащить наименования кабелей со всех страниц.
Но вместо 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, но не смог ни к чему подкопаться.
Скрытый текст
Изменено: Alemox - 04.07.2019 13:14:39
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Если интересно, то PQ без проблем вытягивает таблицу с ценами с сайта по вашей ссылке.
Код
let
    Source = Web.Page(Web.Contents("https://e-kc.ru/price/cable-vvgng-ls?page=1")),
    Data0 = Source{0}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]),
    #"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"Товар", type text}, {"Наличие", type text}, {"Цена", type text}, {"Column4", type text}})
in
    #"Changed Type1"

Можно замутить цикл подставляя циферки в конец ссылки пока не выдаст ошибку и собрать все цены в одну таблицу.
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо, но меня цены наоборот не интересует. Я хотел получить список названий в одном столбце а в другом ссылку на это название, т.е. на страницу.
P.S. PQ у меня нет.
Изменено: Alemox - 04.07.2019 13:32:40
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
перед строкой
Код
XMLHTTP.send

добавьте строку
Код
XMLHTTP.setRequestHeader "Cookie", "beget=begetok"
 
Игорь, большое спасибо. Помогла строчка. Могли бы поделиться в каких случаях это пишется? Или это уже просто опыт?  :)
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
В 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-код правильный.
Скрытый текст
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Кажись разобрался.
Заменил строчку
Код
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")

на
Код
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")

Что-то видимо не так происходит.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
У меня так работает
Код
Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 

на W7 х64 Office 2010 x86
на W7 х64 Office 2013 x64
на WS 2019 х64 Office 2019 x64
 
doober, спасибо за тестирование. На W7 x64 Office 2013 x64 проверил работает. Дома тоже работает на W7 x86 Office 2010 x86.
Изменено: Alemox - 14.12.2019 14:01:02
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Вот что значит опыт в области  :idea:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Да, всё знать невозможно. Каждый день что-то новое нахожу даже в тех местах где уж вроде всё понятно.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
Страницы: 1
Наверх