Bir web sayfası tam olarak yüklenene kadar kodu duraklatmak için, aşağıdaki yöntemi hemen hemen her zaman büyük bir başarı ile kullanıyorum. yöntem Sayfa tamamen yüklenir ve böylece bu içerik çıkarılan olmadığını belirlerse sonraExcel VBA'da, web sayfasının tam olarak yüklenip yüklenmediğini kontrol etmenin yolu nedir?
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Ama bazen, ben metin içeriği yükü görüyoruz. Bununla birlikte, F8 yoluyla koddan geçersem, içerik her seferinde ayıklanır. Bununla birlikte, F8 yoluyla koddan geçersem, içerik her seferinde çıkarılır. Bu, F8 tuşuna art arda basabildiğim kadar hızlı yapılır.
Kodun verileri ayıklamaya devam etmeden önce sayfanın ve tüm içeriğinin tam olarak yüklenmesini sağlamak için nasıl denetleyebilirim?
Her iki durumda da, IE görünmez biçimde çalışıyor. Bununla birlikte, bunu IE ile görünürde denedim ve çalıştığım sayfalarda aslında bu özel konumdaki içerik var.
Bu, Excel 2016'da VBA komut dosyası kullanılarak gerçekleştiriliyor. belirli içerik isteği gibi yazılır:
Ben belge yüklendikten sonra belki değerleri veri kazıma kimse önlemek amacıyla, eklenmeye olduğunu düşünüyorum çünkü ben Excel VBA: Wait for JavaScript execution in Internet Explorer baştan sona kadar okuduktan'get item name from page and write it to the first cell on the first empty row available
Set itemName = objIE.document.querySelector(".the-item-name")
Worksheets("Results").Range("A1048576").End(xlUp).Offset(1, 0).Value = itemName.innerText
. Ancak, bunu yapan herhangi bir betiği tanımlayamıyorum. Orada olmadığı anlamına gelmez. Henüz göremiyorum. -/each
: Bu istek dönecektir ne nedenle, fiyat öncesinde yüklenen (-)
bu konuyla sayfanın özel bir örneği Başlangıçta product-total-price
div elemanı çizgi içeren
https://www.homedepot.ca/en/home/p.dry-cloth-refills-32---count.1000660019.html
URL
olduğunu$11.29/each
yerine.
Bir geçici çözümüm var, ancak olmasını istediğim kadar verimli veya kısa değil. Çizginin varlığı için döndürülen ipi test ediyorum. Eğer varsa, döngü yapın ve tekrar kontrol edin, başkalarını yakalayın ve çalışma sayfasına ekleyin.
setPriceUM:
Set hdPriceUM = objIE.document.querySelector(".product-total-price").innerText
hdPriceUMString = hdPriceUM.innerText
stringTest = InStr(hdPriceUMString, "-")
If stringTest = True Then
GoTo setPriceUM
Else
Debug.Print hdPriceUMString
End If
Bunu okumak için zaman ayırdığınız ve düşündüğünüz için teşekkür ederiz.
Mükemmel bir soru. Bu konuyla da mücadele ediyorum ama neyse ki, her zaman problemimi çözdüğüm bir yol, nesnem kullanılabilir hale gelene kadar, döngü. Yani, sorum şu: sayfa tamamen "yüklendikten" sonra tüm nesneleriniz var mı? Örnek: Set SubmitBtn = doc.getElement ..... '...' 'Nothing' 'bir çalışma zamanı hatası mı veriyor? –
Bu soruna da girdim, ancak genellikle bir ağ sorunudur. Ağ hızlı çalışıyorsa, sorun yok, ancak biraz gecikme süresi göstermeye başladığında, sayfalar tam olarak yüklenmiyor. Fazla zamana izin vermek için bekleme zamanlayıcısı eklemeye başvurmak zorunda kaldım. 'Application.Wait (Now + TimeValue (" 0:00:06 "))' Bu 6 saniyelik bir bekleme. – Mitch
@Mitch Timers, özellikle yavaş ağ için güvenilir olmayan bir çözümdür. – omegastripes