2011-12-17 13 views
6

मेरे पास दो भाग प्रश्न हैं।एक अच्छा नागरिक और वेब-स्क्रैपिंग होने के नाते

सबसे पहले, मैं CrawlSpider स्पाइडर में स्पाइडर के आधार पर एक वेब-स्क्रैपर लिख रहा हूं। मैं एक ऐसी वेबसाइट को स्क्रैप करना चाहता हूं जिसमें कई हजारों (संभवतः सैकड़ों हजारों में) रिकॉर्ड हैं। इन रिकॉर्डों को प्रारंभ पृष्ठ से 2-3 परतों को दफन कर दिया गया है। तो मूल रूप से मेरे पास एक निश्चित पृष्ठ पर मकड़ी शुरू होती है, तब तक क्रॉल करें जब तक कि यह एक विशिष्ट प्रकार का रिकॉर्ड न पाएं, और फिर HTML को पार्स करें। मैं क्या सोच रहा हूं कि मेरे मकड़ी को साइट को अधिभारित करने से रोकने के लिए कौन सी विधियां मौजूद हैं? क्या संभवतया चीज की वृद्धि करने या अलग-अलग अनुरोधों के बीच विराम देने का कोई तरीका है?

दूसरा, और संबंधित, साइट पर अवांछित तनाव डाले बिना क्रॉलर का परीक्षण करने के लिए स्केपर के साथ एक विधि है? मुझे पता है कि जब आप इसे चलाते हैं तो प्रोग्राम को मार सकते हैं, लेकिन क्या पहले पृष्ठ की तरह कुछ मारने के बाद स्क्रिप्ट स्टॉप बनाने का कोई तरीका है जिसमें मैं स्क्रैप करना चाहता हूं?

कोई सलाह या संसाधनों की बहुत सराहना की जाएगी।

उत्तर

6

वहाँ संभवतः बात का संवर्द्धित

करने के लिए एक तरह से मैं Scrapy कैशिंग क्षमता का उपयोग कर रहा साइट स्क्रैप करने का incrementaly

HTTPCACHE_ENABLED = True

या आप नई 0.14 सुविधा का उपयोग कर सकते हैं Jobs: pausing and resuming crawls

या एक विराम डालें विभिन्न अनुरोधों के बीच?

जांच इस सेटिंग:

DOWNLOAD_DELAY  
RANDOMIZE_DOWNLOAD_DELAY 

वहाँ Scrapy के साथ एक विधि एक साइट पर अनुचित तनाव रखने के बिना एक क्रॉलर परीक्षण करने के लिए है?

आप कोशिश कर सकते हैं और डिबग Scrapy shell

में अपने कोड मैं जानता हूँ कि आप इस कार्यक्रम को मार सकता है, जबकि यह चलाता है, लेकिन वहाँ पहले पृष्ठ की तरह कुछ से टकराने के बाद स्क्रिप्ट बंद करने के लिए एक तरीका है कि क्या मैं उस जानकारी को स्क्रैप करना चाहता हूं?

इसके अलावा, आप अपने मकड़ी में किसी भी समय scrapy.shell.inspect_response पर कॉल कर सकते हैं।

कोई सलाह या संसाधनों की बहुत सराहना की जाएगी।

स्क्रैप दस्तावेज़ सबसे अच्छा संसाधन है।

+0

बहुत बढ़िया। आपका बहुत बहुत धन्यवाद। – user1074057

-2

आपको क्रॉलिंग शुरू करना और सब कुछ लॉग करना होगा। यदि आप प्रतिबंधित हो जाते हैं, तो आप पृष्ठ अनुरोध से पहले नींद() जोड़ सकते हैं।

बदलने उपयोगकर्ता-एजेंट एक अच्छा अभ्यास है, भी है (http://www.user-agents.org/ http://www.useragentstring.com/)

आप आईपी पर प्रतिबंध लगा दिया हो, तो उपयोग प्रॉक्सी यह बायपास करने के लिए। चीयर्स।

+1

यह "एक अच्छा नागरिक और वेब-स्क्रैपिंग होने" के बारे में एक प्रश्न का एक दिलचस्प प्रतिक्रिया है :) – damd

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