2010-03-16 20 views
24
Sonraki bağlantıya oluyor nerede scrapy sayfalarını taramaya istiyorum

şuna benzer:javascript onclick ile bir bağlantıyı tıklatmak için scrub'dan CrawlSpider nasıl kullanılır?

<a href="#" onclick="return gotoPage('2');"> Next </a> 

Bunun javascript kodu yorumlamak mümkün scrapy olacak mı? livehttpheaders Ben İleri tıklayarak böyle başlayan "çöp" gerçekten büyük bir parça ile bir POST üretir öğrendim uzatma ile

:

encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n 

Ben CrawlSpider sınıfa benim örümcek kurmaya çalışıyorum,

def logon(self, response): 
    login_form_data={ 'email': '[email protected]', 'password': 'mypass22', 'action': 'sign-in' } 
    return [FormRequest.from_response(response, formnumber=0, formdata=login_form_data, callback=self.submit_next)] 
: ama gerçekten BaseSpider ile, bu kodu nasıl bilemiyorum ben bir POST yaptığı bir giriş formu, olur birinci URL'yi işlemek için parse() yöntemi kullanıldı

Sonra ne yapacağımı söylemek için submit_next() öğesini tanımladım. İlk URL'de hangi yöntemin kullanılacağını CrawlSpider'e nasıl anlarım?

İlk tarama dışındaki tüm istekler POST istekleridir. İki türden istekte bulunuyorlar: bazı verileri yapıştırıyor ve bir sonraki sayfaya gitmek için "İleri" yi tıklıyorlar. aşağıdaki gibi

+1

Bana biraz daha içerik verin, scrub javascript'i yorumlayamaz ancak javascript'in gönderdiği POST mesajını (encoded_session_hidden_map) gizli form alanı olarak bulabilirseniz taklit edebilirsiniz. ya da başka birşey. – Joshkunz

+0

PhantomJS'yi Deneyin. –

cevap

3

fiili metodoloji olacaktır:

  1. Mesaj (yapıyorsun gibi) söz konusu yanıttan sonraki sayfaya
  2. Özü bağlantısını sayfasına ulaşmak için istek
  3. Basit Talebi

    : Bir sonraki sayfa Bütün bunlar, örneğin sunucu yanıt mekanizması ile aerodinamik lazım mümkün veya uygulanabilir

tekrar FormRequest kullanırsanız

  • Sen FormRequest.from_response
  • yılında dont_click = true kullanmayı deneyebilirsiniz Yoksa sen de sap yönlendirme isteği gerektiren meta bahsetmek zorunda bu durumda (sunucudan gelen yönlendirmeyi (302) işlemek isteyebilir callback'inde gönderilmek üzere) Şimdi

hepsini anlamaya nasıl. Fiddler'ı kullanma gibi bir web ayıklayıcısını veya IE 9'da Firefox eklentisi FireBug, ya da sadece vurmak F12 kullanabilirsiniz; ve bir kullanıcının gerçekten sitede yaptığı istekleri web sayfasını taradığınız şekilde eşleştirin.