2012-10-21 15 views
5

मैं ऐसा कुछ बनाने की कोशिश कर रहा हूं जो सामग्री को अनंत स्क्रॉल वाले पृष्ठ से क्रॉल करता है। हालांकि, मैं पहले 'ब्रेक' से नीचे सामान नहीं प्राप्त कर सकता। मैं यह कैसे करु?मैं अनंत-स्क्रॉलिंग पृष्ठ को कैसे क्रॉल करूं?

+1

हमें यह जानना होगा कि आपके प्रश्न का उत्तर देने के लिए अनंत स्क्रॉलिंग कैसे कार्यान्वित की जाती है। यह शायद AJAX कॉल का उपयोग कर किया जाता है। इसका अर्थ यह है कि यदि आपका क्रॉलर रूबी जैसे सर्वर साइड भाषा में लिखा गया है, तो आपको उस पृष्ठ पर ते जावास्क्रिप्ट निष्पादित करने के लिए एक wqy की आवश्यकता होगी। – bigblind

+0

अजाक्स का उपयोग करके कार्यान्वित किया गया। – user1319169

उत्तर

7

अनंत स्क्रॉलिंग लगभग हमेशा AJAX, या संबंधित तकनीक का उपयोग करके जावास्क्रिप्ट में किया जाता है। इस प्रकार, आपके वेब क्रॉलर को HTML प्राप्त करने और इसे पार्स करने के लिए पर्याप्त नहीं है; इसे जावास्क्रिप्ट को डाउनलोड और निष्पादित करना होगा, या कम से कम AJAX कॉल के लिए इसे स्कैन करना होगा।

एक पूर्ण जावास्क्रिप्ट निष्पादन करना संभवतः सर्वोत्तम (यानी, काम करने की सबसे अधिक गारंटी होगी), लेकिन शायद यह करना सबसे मुश्किल है।

AJAX अनुरोध के लिए जावास्क्रिप्ट स्कैन और/या कार्यों कि AJAX कॉल पर अमल और उसके बाद करना डोम हेरफेर शायद सबसे आसान

+0

धन्यवाद। चूंकि मैं एक सापेक्ष नौसिखिया हूं, क्या आप मुझे ऐसा करने का उदाहरण दे सकते हैं? – user1319169

+1

यह करना एक आसान बात नहीं है। लेकिन हालांकि आपने एचटीएमएल प्राप्त करने और इसे पार्स करने के लिए अपने क्रॉलर को लिखा है, क्या इसे 'स्क्रिप्ट' टैग की तलाश है, 'src' विशेषता से यूआरएल प्राप्त करें, फिर जेएस डाउनलोड करें और 'xmlhttp' के लिए स्कैन करें और क्या नहीं। – cegfault

+0

और xmlhttp के लिए भी स्कैनिंग जटिल हो सकती है, क्योंकि इसे शायद किसी अन्य फ़ंक्शन द्वारा बुलाया जाता है। तो आइए आपको xmlhttp का कॉल मिल जाए, जिसका उपयोग $ .ajax द्वारा किया जाता है, अब आपको उस स्थान पर जाना होगा जहां $ .ajax कहा जाता है, जो उपयोगकर्ता द्वारा परिभाषित एक अलग फ़ंक्शन हो सकता है। संक्षेप में, आपको डाउनलोड किए जा रहे संसाधन के यूआरएल को जानने के लिए पूरे कॉल स्टैक को पार करना होगा, लेकिन अधिक परेशानी है, यूआरएल काउड गतिशील रूप से बनाया जा सकता है। इस समस्या को हल करने के लिए, Google AJAX पृष्ठों को क्रॉल करने की अनुमति देने के लिए विशिष्ट मार्कअप जोड़ने वाले वेबमास्टर्स पर निर्भर करता है, – bigblind

0

एक अजाक्स अनुरोध (पूर्ण जे एस निष्पादन के सापेक्ष) हो जाएगा की तलाश में किसी अन्य अनुरोध से अलग नहीं है । आप बस अनुरोध करते हैं, परिणाम का विश्लेषण करते हैं, और वहां आपका डेटा होता है।

यदि आपने पहले ऐसा नहीं किया है तो यह कुछ अनुभव ले सकता है लेकिन यह एक अच्छा सीखने का अनुभव जैसा लगता है।

3

यह उत्तर अनंत स्क्रॉलर्स के एक बड़े प्रतिशत के लिए प्रासंगिक होना चाहिए, जाहिर है कि आपका मिलेज भिन्न हो सकता है।

अधिकांश अनंत स्क्रॉलर ऑफ़सेट स्थिति का उपयोग करके काम करते हैं और ऑफ़सेट से आइटम के अगले हिस्से को पकड़ते हैं। यह बिल्कुल वैसा ही है जैसा पेजिंग

< Previous 1 2 3 4 5 Next > से आगे बढ़कर काम कर सकता है सिवाय इसके कि ऑफ़सेट संग्रहीत किए जाते हैं और एक नया अनुरोध करने के लिए उपयोग किया जाता है।

इस बात को ध्यान में रखते हुए, यदि आप क्रोम या फ़ायरफ़ॉक्स में डेवलपर टूलबार खोलते हैं और नेटवर्क टैब को चेक करते हैं, तो आप स्क्रॉल के रूप में आने वाले अनुरोधों को देख सकते हैं।

अनुरोध पर मानकों को देखें, और आप सबसे अधिक संभावना देखेंगे कुछ की तरह

GET /api/v2/books?offset=100=count=10 
GET /api/v2/books?offset=110=count=10 
GET /api/v2/books?offset=120=count=10 

यह जानकर, आप बहुत आसानी से वास्तव में अनदेखा कर सकते हैं लक्ष्य HTML के स्क्रैप, और बस के लिए अपने आंतरिक लक्ष्य URI का उपयोग अपने अनुरोध करें

+0

यह पूरी तरह से काम करता है। – chris

संबंधित मुद्दे