Что происходит в кэше IE во время выполнения
Я пишу сценарий в Excel VBA, чтобы получить эскизы из поиска картинок Google. При попытке выяснить, как очистить временные файлы, созданные в этом автоматическом поиске, я наткнулся на INetCache
каталог.
Дальнейшее копание показывает, что эта папка (в частности, Low\IE
подкаталог) содержит огромное количество изображений - некоторые из них представляют собой миниатюры изображений, те самые файлы, которые я с трудом скачивал через vba, и уже присутствуют. Поэтому я решил исследовать дальше, шаг за шагом отлаживая мой код и посмотрев, что появилось в моем InetCache\Low\IE
каталоге и когда. Я собираюсь просмотреть результаты и надеюсь получить ответы на некоторые вопросы.
- Что означают результаты
- Могу ли я использовать эти файлы в своих интересах, а не загружать дважды (один раз в кэш, один раз с моей программой VBA)
- Как я должен очистить этот беспорядок от VBA
NB Интернет говорит мне, что эта папка находится в разных местах в зависимости от вашей системы; мой %localAppData%\Microsoft\Windows\INetCache\Low\IE
с Win10 IE11, но довольно надежный способ получить это набрать
?CreateObject("Shell.Application").Namespace(32).self.path
в непосредственное окно vba. Все файлы защищены системными файлами, поэтому должны быть сделаны видимыми
Мои результаты
Вот то, что я обнаружил, появилось в INetCache\Low\IE
папке, когда я запустил свой код VBA. Я начал с переименования существующей папки вoldIE
Запустите браузер
Set objIE = New InternetExplorer 'requires referencing Microsoft Internet Controls
- Новая
IE
папка создана пустой
Сделать браузер видимым
objIE.Visible = True
- Новый
container.dat
файл создан вIE
Перейдите на веб-страницу и дождитесь загрузки
objIE.Navigate "https://www.google.com/search?q=cookies&safe=off&tbs=isz:ex,iszw:1366,iszh:768&tbm=isch&source=lnt" 'google images search for "cookies" Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop 'wait for load
- 4 Новые подпапки, созданные с 8-значными буквенно-цифровыми (заглавными) именами
- Они содержат несколько общих значков (Chrome, FB, Twitter), хотя один из них содержит миниатюру первого результата изображения (с именем
images[1].jpg
)
Прокрутка страницы
Google запускает некоторый Ajax
скрипт для загрузки большего количества изображений при прокрутке вниз. Мой метод состоит в том, чтобы прокрутить вниз, пока не появится «кнопка получения дополнительных результатов»; это должно означать, что загружена вся страница объектов изображения (хотя их миниатюрные ссылки / строки еще не представлены).
Set currpage = objIE.Document Set myDiv = currpage.getElementById("fbar") 'this is the load more images button Do Until elemRect.bottom > 0 'scroll until myDiv is in view currpage.parentWindow.scrollBy 0, 10000 'scroll by a big amount to trigger next part to load Set elemRect = myDiv.getBoundingClientRect Loop
- Все 4 папки заполняются изображениями
- Эти изображения либо имеют
images[1-10].ext
наименование, либоimages
сопровождаются буквенно-цифровой строкой из 8 символов - Я хотел бы знать, есть ли здесь шаблон, связывающий имя файла / другое свойство с его местоположением на веб-странице, поскольку это позволило бы мне использовать эти изображения в моей программе VBA
- К концу полной загрузки страницы в кэше находится 375 jpgs и 390 изображений, по сравнению с 400 результатами на всей веб-странице.
- Эти изображения либо имеют
- Случайные проверки я сделали на этих изображениях в кэше сделал, показывает, что они были в результатах поиска IE (то есть, я мог бы найти их с помощью прокрутки вокруг результатов изображения, поэтому я предполагаю, что все изображения в кэше действительно поступают непосредственно из результаты поиска IE. Но мои проверки не были исчерпывающими)
Я также прокрутил страницу вручную в течение этого времени
- Это создало множество новых
.txt
файлов и других файлов. Он также загрузил больше изображений в кэш. - Для того, чтобы это было полезно, мне понадобится более систематический способ получить их в VBA.
Подсчет изображений
imgCount = currpage.getElementById("rg_s").getElementsByTagName("IMG").Length
- Это вернуло 400 для данного поискового URL. Кэш содержал 375 изображений, которые выглядели как миниатюры из поиска, и несколько других логотипов и изображений значков.
- Возможная причина расхождения заключается в том, что некоторые (обычно первые 10 или около того) миниатюр являются строками, закодированными в формате base 64, другие имеют URL-адреса, возможно, кэшируются только те, которые с URL-адресами (хотя это не всегда так)
Выход из IE
objIE.Quit
- Это не сделало ничего заметного для файлов в кеше
Наконец, загрузка эскизов изображений
Public Declare Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadToFileA" _ (ByVal pCaller As Long, _ ByVal szURL As String, _ ByVal szFileName As String, _ ByVal dwReserved As Long, _ ByVal lpfnCB As Long) As Long
с последующим
fileurl = currpage.getElementById("rg_s").getElementsByTagName("IMG")(0).src 'returns thumbnail url of first image result strFile = Environ("Temp") & "\Temp.jpg" 'place file in temp folder ret = URLDownloadToFile(0, fileURL, strFile, 0, 0) 'fileurl is the web url, strfile is the save location
- Также ничего не делает с изображениями в кеше
Что я хочу знать (TL; DR)
Это все прекрасно и модно, но что я на самом деле спрашиваю?
Что ж:
- Есть ли логика именования файлов изображений в кеше IE - или какого-либо другого свойства, которое я могу использовать для отображения миниатюр изображений в том же порядке, что и при поиске в IE, используя эти файлы кеша?
- Если я действительно не могу использовать их вообще, потому что их местоположение / наименование совершенно непредсказуемо; как я могу очистить их от VBA / остановить их создание
- Этот ответ не касается их, равно как и подход Сиддхарта Раута . Я не могу удалить их
CreateObject("Scripting.FileSystemObject")
из-за проблем с защитой, и все другие методы, которые я нашел, являются ручными и требуют щелчка по меню IE - Насколько это безопасно? Reddit говорит, что это так, но на самом деле они не такие супер- пользователи, как вы, ребята. И я планирую запустить это программное обеспечение на машинах других людей, поэтому я хочу проверить, следует ли мне избавиться от этого, чтобы оно было передано другим людям.
- Я чувствую, что нет необходимости загружать все это в первую очередь
- Этот ответ не касается их, равно как и подход Сиддхарта Раута . Я не могу удалить их
- Наконец, чисто из интереса, для чего все файлы загружаются / создаются в любом случае?
0 ответов на вопрос
Похожие вопросы
-
3
Мой файл заблокирован в Excel 2007, что происходит?
-
4
Есть ли в IE эквивалент ключевых слов в закладках?
-
3
IE на Windows 7 не сохраняет файлы на диск
-
-
8
Как остановить шпионские / рекламные всплывающие окна?
-
1
«Операция прервана» ошибка постоянно на IE8
-
3
Проверка подлинности домена Windows с помощью Firefox
-
2
Есть ли способ заставить Excel 2007 автоматически восстанавливать фоновые файлы, как в MS Word?
-
9
Можно ли с помощью поиска Google заблокировать все результаты в домене?
-
1
Excel Word Wrap + исчезающий текст
-
1
Простое объединение / очистка с помощью Excel