Selenyum phantomjileri kullanarak scrapyjs'e dinamik web sitesinin kazıma işlemini değiştirmeye çalışıyorum. Ancak sorun, bir tıklama olayı sıçrama halinde yazarsak, çalışmak için bir getiri isteğine ihtiyaç duyar. Verim talebi verirsek, ilk sayfayı oluşturacaktır. Dolayısıyla, kaynak kodunda tıklama etkinliği değişikliklerini görmüyoruz. Yani, web sayfasını yeniden oluşturmaya gerek yoktur. Selenyumda mümkündür. Sıçramada aynı özellik var mı?Sıçrama + scrapyjs + scrapy'den herhangi bir verim talebi olmadan tıklama olayından sonra html kaynak kodunu nasıl alabiliriz?
1
A
cevap
0
Lua değişkenini kullanmak için bir çözümüm var. Splash meta args yoluyla değişkenleri geçirebiliriz. Örnek:
v = 1
yield scrapy.Request(url, meta={'splash': {'endpoint': 'execute','args': {'lua_source': script,'indx':v}},'v':v } , callback=self.parseVariationDetailPage , dont_filter=True)
biz "splash.args.indx" tarafından args geçti indx değerini elde edebilirsiniz.
Aşağıdaki işlev öğeyi gösterir. =================== altında
script = """
function main(splash)
splash:autoload("https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js")
z = splash.args.indx
assert(splash:go(splash.args.url))
assert(splash:wait(1))
assert(splash:runjs("$('#listChipColor li[z]').click()"))
assert(splash:wait(1))
return splash:html()
end """
===================== Eski cevap ====
Sayfayı scrapyjs tıklama olayı olmadan oluşturmadan bir çözüm göremiyorum.
Örnek kod ve çalışması aşağıdadır. Ls değişkeni yazmak için bir çözüm bulamıyorum. Yani burada tıklama öğesini elde etmek için basit bir mantık kullanın.
scrapyjs tıklayın
script = """
function main(splash)
splash:autoload("https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js")
assert(splash:go(splash.args.url))
assert(splash:runjs("k = window.location.href"))
assert(splash:runjs("l = k.length"))
assert(splash:wait(1))
assert(splash:runjs("k = k.charAt(l - 1)"))
assert(splash:runjs('document.querySelectorAll("ul.colour-swatches-list > li")[k].click();'))
assert(splash:wait(1))
return splash:html()
end """
talep
url = url+"vl="+'%s'%v
yield scrapy.Request(url, self.parseVariationPage,meta={
'splash': {
'args': {'lua_source': script},'endpoint': 'execute'},
'url':url,'type': response.meta['type'],'category':response.meta['category'],'fit':response. meta['fit'],'v':v
})
İlgili konular
- 1. HTML kaynak kodunu CefSharp web tarayıcısından edinin
- 2. Çapraz-Kaynak Talebi
- 3. aynı kaynak talebi
- 4. Çapraz Kaynak Talebi Engellendi: Aynı Kaynak İlkesi,
- 5. Python kodunu kullanarak web sitesinden nasıl değer alabiliriz?
- 6. Bir SAP sistemi olmadan taşıma talebi içeriğini görüntüle?
- 7. jQuery ateşleme tıklama olayı bir tıklama olmadan
- 8. Yüklenen bir UIWebView öğesinin HTML kaynak kodunu alma
- 9. `drop` olayından sonra yönlendirme nasıl durdurulur?
- 10. Fare düğme olayından tekerlek düğmesi tıklama etkinliğini nasıl ayırt edebilirim?
- 11. Ubuntu kaynak kodunu nasıl alabilirim?
- 12. Kaynak kodunu bir koddan Emacs org modunda
- 13. Hata ayıklama olmadan "Symbols Server" kaynak kodunu görüntüleyin.
- 14. Android kaynak kodunu bulma
- 15. JS'nin içeriği yüklemesini bekledikten sonra bir HTML sayfası nasıl ayrıştırılır?
- 16. Android kaynak kodundaki değişiklikleri yaptıktan sonra android kaynak kodunu nasıl yeniden oluşturabilirim
- 17. Metrede örnek kaynak kodunu nasıl kullanırım?
- 18. Girdikten sonra html işaretleme olmadan kesme satırı
- 19. Golang profiler kaynak kodunu bulamıyor
- 20. Facebook'un örnek kodunu kullanarak kaynak "Kaynak yüklenemedi"
- 21. jquery kaynak kodunu anlama
- 22. Çift tıklama eylemi olayından sonra düzenleme modundan çıkar/devre dışı bırak
- 23. django form hataları. Herhangi bir html etiketi olmadan hatayı al
- 24. Kaynak kodu olmadan ODOO dağıtımı nasıl yapılır
- 25. Opencv işlev kaynak kodunu nasıl bulabilirim?
- 26. iframe ifre edildikten sonra herhangi bir HTML kodu document.write
- 27. Ruby bloğunun kaynak kodunu yazdırma
- 28. nereden itertools.combinations kaynak kodunu() işlevi
- 29. Penceremi DDE olayından sonra nasıl ön plana getirebilirim?
- 30. Harici URL'den html kaynak kodu nasıl alınır?
Eğer kodun girinti düzeltebilirim? –
Merhaba Paul, Kod girintisini düzelttim. –