Bir yem üretmek olmayan bir RSS sayfasını kazıma

3 Cevap php

Ben düzenli bir RSS beslemesi oluşturmak için (önceki olanları tam olarak aynı yapıya sahip yeni yazılar ekleyerek) güncelleştiren bir sayfa kazımak istiyorum.

Ben kolayca sayfasını analiz kod yazabilirsiniz, ama sayfası güncellemeleri nasıl benim php komut biliyorsunuz zaman nasıl bir ping ie taklit mi? Bir cron iş olmak zorunda mı?

(Ben biliyorum Muhtemelen bir yinelenen bir soru, ama hayır şans ile doğrudan bir cevap aradı. Yakın aldım bir kazıma senaryo ama sayfadaki değişikliklere yanıt almak için nasıl hiçbir bilgi vardır ki, http://stackoverflow.com/questions/557598/scrape-and-generate-rss-feed oldu otomatik)

3 Cevap

Bu olabilir ya da sayfa son ne zaman güncellendiğini söylemek kolay olmayabilir sistemine bağlı.

Değişiklikleri kontrol etmek için, sayfanın Last-Modified başlık için HTTP başlıklarını kontrol edebilirsiniz. Tüm sistemler düzgün başlığının güncellenmesini, bu yüzden kullanışlı olmayabilir. Bu değiştirilmemiş sayfa sizin talebinize bir If-Modified-Since başlık sağlamayı, özellikle 304 (Modifiye değil) bir durumu dönecektir olması da mümkündür.

Ben kesinlikle bir cron işi üzerinde böyle bir şey çalışır. Bu olabilir iken kullanıcı sayfası almak, yapmak, dışarı çıkmak için sunucu için (nispi olarak) uzun bir süre bekliyor olacak sayfasını güncellemek için varsa possible, başlıklarını sadece bunu işleme ve yanıtı gönderebilir. Eğer bir yaklaşım tabanlı olmayan bir cron ile zaman zaman zaman aşımı çalıştırmak olmasaydı sürpriz olurdu.

Sen sitesi (varsa, son değiştirilme başlıklarını kontrol ederek veya ilgilendiğiniz içeriğini kontrol ederek ya) güncelledi olmadığını denetleyen bir crontab çalışan olabilir.

Lütfen crontab sitesini denetler zaman, içeriğindeki değişikliği algılarsa, bir kuyrukta (Zend_Queue http://framework.zend.com/manual/en/zend.queue.example.html, örneğin gibi bir şey) bir mesaj eklemek olabilir, o zaman sadece iki mesaj yoluyla çalışan bir işçi olabilir Bir zaman / veri sınırı ulaşıldı kadar, ya da kuyruk boşalana kadar.

Hiçbir Son değişiklik çizgi varsa da ETag'a ve Content-Length hatlarının varlığı ve değeri, bir HEAD isteğine yanıt olarak kontrol edebilir. Bunların hiçbiri (saklı ettik) önceki değerler eşleşirse, o zaman içerik muhtemel değişti. Siz değişiklik göstermek istiyorsunuz o başka response header hatlarına ekleyebilirsiniz.