Как я могу удалить файлы cookie и временные файлы Интернета, когда выполняю очистку веб-страниц с помощью VBA - PullRequest
0 голосов
/ 08 января 2019

Итак, у меня есть список с около 300 URL-адресов с веб-страницы, которые я хочу просматривать один раз в день.

Пока что я заблокирован примерно через 5 минут после первого просмотра веб-страницы.

Как я могу очищать файлы cookie и интернет-файлы при каждом переходе по URL-адресу?

Есть ли способ имитировать нечто похожее на поведение человека?

With ie
    Set wks = wb.Sheets("TESTINGS")

    For j = 22 To 45
    wks.Range(Cells(j, 1), Cells(j, 5)).Interior.ColorIndex = 38
    counter = counter + 1

    mylink1 = wks.Cells(j, 2).Value

    .Visible = True
    .Navigate mylink1

    While .Busy Or .ReadyState < 4: DoEvents: Wend


    Set products = .Document.querySelectorAll(".card.js-product-card")
    t = Timer

    Do
        DoEvents
        ie.Document.parentWindow.execScript "window.scrollBy(0, window.innerHeight);", "javascript"
        Set finalPrices = .Document.querySelectorAll(".card.js-product-card span.final-price")
        Application.Wait Now + TimeSerial(0, 0, 3)
        If Timer - t > MAX_WAIT_SEC Then Exit Do
    Loop Until finalPrices.Length = products.Length

    Set sellers = .Document.querySelectorAll(".card.js-product-card .shop.cf a[title]")
    Set availability = .Document.querySelectorAll(".card.js-product-card span.availability")
    Set pname = .Document.querySelectorAll(".location-tab")
    With ThisWorkbook.Worksheets("TESTINGS")

        For i = 0 To sellers.Length - 1
If availability.Item(i).innerText = "¢ìåóç ðáñáëáâÞ / ÐáñÜäïóç 1 Ýùò 3 çìÝñåò" Then               
            .Cells(j, 4) = sellers.Item(i)
            .Cells(j, 5) = finalPrices.Item(i).innerText
            .Cells(j, 6) = availability.Item(i).innerText
            .Cells(j, 7) = pname.Item(i).innerText                              
            Exit For              
            End If
   wks.Range(Cells(i, 1), Cells(i, 5)).Interior.ColorIndex = 0
        'MsgBox ("Link Number " & j & "They left " & MaxNumber - counter)
        Application.StatusBar = "Current row " & j & " Progress: " & counter & " of " & MaxNumber & " " & Format(j / MaxNumber, "0%")

        Next

    End With

wks.Range(Cells(j, 1), Cells(j, 5)).Interior.ColorIndex = 0
Next
Call TransferDataFromColumnE17(ThisWorkbook.Worksheets("TESTINGS"))
.Quit
Set ie = Nothing

End With

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Редактировать: Я только что заметил, что это старый пост, но лучше поздно, чем никогда, я полагаю.

Если вы хотите придерживаться VBA, вы можете позвонить по подпункту ниже:

Public Sub Clear_Browser()
    'clears temporary Internet files
    Shell "RunDll32.exe InetCpl.Cpl, ClearMyTracksByProcess 8"
    'deletes all history
    Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255"
    'deletes cookies
    Shell "RunDll32.exe InetCpl.Cpl, ClearMyTracksByProcess 2"
    'deletes form data
    Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16"
    'deletes password history
    Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32"
    'deletes history
    Shell "RunDll32.exe InetCpl.Cpl, ClearMyTracksByProcess 1"
End Sub

Вы можете вызывать его в цикле For, чтобы очищать каждые 30 итераций j следующим образом:

  If j Mod 30 = 0 Then
         Clear_Browser
  End If

Однако автоматизация IE очень, очень медленная, поэтому я бы порекомендовал адаптировать то, что я делал в этом посте, где я использовал MSXML2.ServerXMLhttp.6.0 Метод. Этот метод очень быстрый и по сути представляет собой невидимый браузер, в котором нет кеша, истории или файлов cookie. Он отправляет HTTP-запрос на сервер и получает ответ от желаемых данных.

Если вам нужно что-то действительно быстрое и просто лучше, забудьте VBA и используйте Python с библиотекой BeautifulSoup , как предложено @ ryguy72.

0 голосов
/ 09 января 2019

Я не вижу конкретного URL в вашем сообщении. Я подозреваю, что сайт определяет вас как бота и блокирует вас. Я не думаю, что очистка куки, или кеша, или чего-то еще, вообще сделает что-нибудь. Попробуйте сделать это на Python.

from bs4 import BeautifulSoup
import urllib2
url = "https://www.pythonforbeginners.com"
content = urllib2.urlopen(url).read()
soup = BeautifulSoup(content)
for link in soup.find_all('a'):
    print(link.get('href'))

Экспорт в Excel. Тогда у вас будет все, что вам нужно. Он будет работать НАМНОГО быстрее, а также НАМНОГО более стабильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...