मैं केवल क्रॉल किए गए पृष्ठों से HTML प्राप्त करने के लिए Crawler4j का उपयोग कर रहा हूं। यह लगभग 50 पृष्ठों की मेरी परीक्षण साइट के लिए पुनः प्राप्त HTML को सफलतापूर्वक संग्रहीत करता है। इसका उपयोग करता है shoudVisit
विधि जिसे मैंने लागू किया है, और यह इसका उपयोग करता है visit
विधि मैंने लागू की। ये दोनों बिना किसी समस्या के चलते हैं। फाइलें भी बिना किसी समस्या के लिखी गई हैं। लेकिन सभी पृष्ठों पर जाने और संग्रहीत किए जाने के बाद, यह बंद नहीं होता है:
System.out.println("Starting Crawl");
controller.start(ExperimentCrawler.class, numberOfCrawlers);
System.out.println("finished crawl");
दूसरा println
कथन कभी भी निष्पादित नहीं होता है। मेरे स्टोरेज डेस्टिनेशन में, क्रॉलर ने "फ्रंटियर" नामक एक फोल्डर बनाया है जिसमें यह लॉक होता है (क्रॉलर अभी भी इसका उपयोग कर रहा है) मैं इसे हटा सकता हूं
यहां विन्यास सेटिंग्स हैं जो मैंने इसे दिया है (हालांकि यह नहीं है "मुझे लगता है कि मैं क्या सेटिंग सेट करता हूं)
config.setCrawlStorageFolder("/data/crawl/root");
config.setMaxDepthOfCrawling(1);
config.setPolitenessDelay(1000);
config.setMaxPagesToFetch(50);
config.setConnectionTimeout(500);
एक त्रुटि है जो क्रॉल खत्म होने के एक मिनट बाद दिखाई देती है:
java.lang.NullPointerException
at com.sleepycat.je.Database.trace(Database.java:1816)
at com.sleepycat.je.Database.sync(Database.java:489)
at edu.uci.ics.crawler4j.frontier.WorkQueues.sync(WorkQueues.java:187)
at edu.uci.ics.crawler4j.frontier.Frontier.sync(Frontier.java:182)
at edu.uci.ics.crawler4j.frontier.Frontier.close(Frontier.java:192)
at edu.uci.ics.crawler4j.crawler.CrawlController$1.run(CrawlController.java:232)
at java.lang.Thread.run(Unknown Source)
क्रॉलर को बाहर निकलने से क्या रखा जा सकता है? यह "फ्रंटियर" फ़ोल्डर में क्या लिख रहा है?
उत्तर:
उत्तर № 1 के लिए 1आप क्रॉलर 4 जे के पुराने संस्करण का उपयोग कर रहे हैं।
जिस बग का आप उल्लेख कर रहे हैं, वह बहुत परेशान करने वाला है, और वास्तव में आंतरिक डीबी क्रॉलर 4 जे में एक बग का उपयोग कर रहा है: बर्क्लीबीडीबी।
Crawler4j, आंतरिक रूप से सीमांत निर्देशिका का उपयोग करता है और आपको इसकी चिंता नहीं करनी चाहिए या इसे स्पर्श नहीं करना चाहिए, क्योंकि यह केवल आंतरिक उपयोग के लिए है।
उपरोक्त सभी कहा जा रहा है - मैंने उस बग को ठीक कर दिया है, और आपको क्रॉलर 4 जे का नवीनतम संस्करण डाउनलोड करना चाहिए जिसमें मेरे बगफिक्स (आपके उल्लिखित एक सहित बगफिक्स के बहुत सारे) हैं।
तो कृपया हमारी नई साइट पर जाएं: https://github.com/yasserg/crawler4j
इसे स्थापित करने के बारे में निर्देशों का पालन करें (मावेन?) और नए और बहुत बेहतर संस्करण का आनंद लें।
बाहरी एपीआई लगभग नहीं बदला (केवल वास्तव में थोड़ा)।
नए (वर्तमान में v4.1) संस्करण का आनंद लें।