{"_id":"crazy-crawler","_rev":"25-82f494f039795897717e3af159d08bb3","name":"crazy-crawler","description":"crawl everything by this","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"crazy-crawler","version":"0.1.0","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"9887231114001e3f4f0502395cbb675e386981aa","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-AuZm2ZS/pYO1sscc205cev9jbf8y+5cWwk4BjLUxOKZx0jMlnNyGrgdhNAHZNK2GVMh6ryRi1K0PNkFzVdcS3Q==","shasum":"431d9fdb42330fa06c8d915d8d5604628d6a9818","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD75+MjieTl/U62Et7Iumq3MB8CPMMjjenykQRHz/7SFQIhAPE3eC5+Oon4ZKfyjjzAeTRfyHFpDH4gA0xN/cKpcIE1"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.0.tgz_1516858450833_0.4084026583004743"},"directories":{}},"0.1.1":{"name":"crazy-crawler","version":"0.1.1","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"9887231114001e3f4f0502395cbb675e386981aa","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-ExL0DwP7lR5YV/BhWEJDpG6/6mw3o+5WF4kvkHZ+LNWzdFiEoRt7mKvta5n0mFqdaGdHs3cKKh86yVWEJVqaAg==","shasum":"67e272f5ca5437a4d451a980afbf278820334a36","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFxsCCFQBkIJdxaVxKtd0adsaspUBuZHJ82fwJrzVfwpAiBkwex1TRVwjMrM++qzQ881dxaywIaFUMA0NOXze26FWQ=="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.1.tgz_1516939395255_0.28685692441649735"},"directories":{}},"0.1.2":{"name":"crazy-crawler","version":"0.1.2","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"9887231114001e3f4f0502395cbb675e386981aa","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.2","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-4z7JUOf5+SYmFK1/ZnfTpQnuwRvZdtzljw4JVDOwAdddZW3Hn6MHc/lDverj6/dRewhkNWNRB0k3ZtXmgN4LTg==","shasum":"093eb2fe2952cd4af9fe03f6072f27a354f7d802","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDTuvIvUbDKgDF+VyOxiZjCGpqIB1PlJtnC83Vp+msjwIhALsunTu0HQDDN5R6VI137uQB5lJwbhgYqijOwIlztfSk"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.2.tgz_1516971976123_0.8468413429800421"},"directories":{}},"0.1.3":{"name":"crazy-crawler","version":"0.1.3","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"bae62e88b122b52b2c8df0ebc353d68a4a1a435b","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.3","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-fR/1DkrKwWzu88muXMKz1TKQ56ucCWs/JwK3xDXyluhryzaChBPB23b6fMLCUAgG8AEL/g1UGUHT4NwXcMMPhQ==","shasum":"2a1c708d64e3435c7e27f23089a2c6d40d68f945","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAkAdpXnuP3wLCK1o5YuJYtnUF1W1t0jZFt2WJHhg/lSAiBRnKbhgYrf9Lf26OPFRnVvVKN+RmuxI9zScaDfZhMtdw=="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.3.tgz_1517046802652_0.14660796918906271"},"directories":{}},"0.1.4":{"name":"crazy-crawler","version":"0.1.4","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"2336ee8d94d280842607c2d4f223fb9aab35e344","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.4","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-uo5/A4aumrI5f7jYaDeMw1ypn7eiRTfB79eZ+MOHvGmEaSGbbqoSwjhXfdP9/sRPiSMMT8zRHatxw1xyq53m2g==","shasum":"d8811ffcbb0bf138e292cfa5861531e6cb95e98d","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdJEthJDgkbdrlK3q2z1Ndhx9/Ko9SQHdR29vBIOhHUQIhALcS4Sn6rC27gecV1hWVQhnunick7uTi8e9Yw8kyAmtl"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.4.tgz_1517123593535_0.45943084359169006"},"directories":{}},"0.1.5":{"name":"crazy-crawler","version":"0.1.5","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"2336ee8d94d280842607c2d4f223fb9aab35e344","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.5","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-gf/ST6Y9u4wUQ769wgFX721xZu9ytMdlPEANk4QhKAUTeZucoQykTNwCGxhJ7oBN1DFVt9S3pf14uIy2+ssreQ==","shasum":"d94318e219af765c4fe2490e90ed1f76e758558f","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrlblpdJ8pSLDR/fp0/QtrpPMHZgMK40gYoIXfzL/jIgIgOKcsa+Cz3i8cCPV2TYjga8nrM0+plHAz0FKAtikDL+w="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.5.tgz_1517126629033_0.19329184852540493"},"directories":{}},"0.1.6":{"name":"crazy-crawler","version":"0.1.6","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"2336ee8d94d280842607c2d4f223fb9aab35e344","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.6","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-SVb0tPO37VKONmIDf/6fQEaeKiKOYS2CIgrAXrcMz4BY3SUVoUkKhFFqnJPLPjCkwxXnd7WgjaWR/Uf3j8Cebg==","shasum":"60dcfa51dc74eb65c487035dd6ffc0d4dcff1318","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYuj5gOYwNVZInLcmN0WFQr8+SCRPJCANoslYjwKp22AiEAjyuAQN3GEhsZ4M4sI5EzRnFD3yh1aROgpHm49yl2+Yo="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.6.tgz_1517213269167_0.7071437097620219"},"directories":{}},"0.1.7":{"name":"crazy-crawler","version":"0.1.7","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"2336ee8d94d280842607c2d4f223fb9aab35e344","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.7","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-+ZD+iWVPwI9KoRWovGpnbvAn9ilMIwX4ZggpUPQ0JC35W7lTgR3euXdZAXhb1X4/YaDQhmYB0X/uXEj+qQTFKQ==","shasum":"52f2331a01cd59914deb5c4718e9b933721154a4","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC42RA+sQeAl7HqCXLNSV9jkkaR1hsqcZfLEf1FMSNOBQIhAMJSR1OXtw5yud8p6Sy3E/cUVnes55T63ML11KMHcjYa"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.7.tgz_1517367223060_0.39096413762308657"},"directories":{}},"0.1.8":{"name":"crazy-crawler","version":"0.1.8","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0","cookie":"0.3.1"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"2336ee8d94d280842607c2d4f223fb9aab35e344","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.8","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-MH94kSZXWF8pjTAr/lrHXd2GPiONZqkaGYNGuyunQsMwQsAPjuEOQL+lAHkF5e+mwKdhizhGKs41Lut8bTjeWA==","shasum":"e12ce6e6f3a436d9679d436a78cdf719d7f857cd","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.8.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeae+ycMjfLWT+UpQKg/E769AULTFI3XoDLZo1D6fKNQIgdv45OrSADsLdVQbQJHZW+A5eI983O+ZiluotqXXOjcE="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.8.tgz_1517468632995_0.27352623268961906"},"directories":{}},"0.1.9":{"name":"crazy-crawler","version":"0.1.9","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0","cookie":"0.3.1"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"62ccbf2b29e4b3f2087433f7acc8f9e08277d2a1","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.9","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-G9LrhZsC8qJ5KWzJKpKLMh1ZwHTNTCKe6msmvN6XnXYAP6SVWXE2bI+1sJchm+mcG/fZ7tm12WUbyu8Ej/f0pg==","shasum":"400d4010a2410b8a876546f815d3ad7126b26462","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.9.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGxB9QxZkvZ77B+lft6B10F9p5yx6mQ+J3TVRooc6cphAiBeSXqBcwMt8Xy4pPhaGlskkHjPQAkP2y8aJanJwvQS7w=="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.9.tgz_1517472398777_0.7049351462628692"},"directories":{}},"0.1.10":{"name":"crazy-crawler","version":"0.1.10","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0","cookie":"0.3.1"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"62ccbf2b29e4b3f2087433f7acc8f9e08277d2a1","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.10","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-q3F4b+oX0hdkt6lXrAA30uJ8TCwSk9TeM+F/2nQrbrinRoAFCXJUetz//mOuaqW9r1lO/qr6GqR8fntkbNaYYg==","shasum":"ecfc691c42d645d69daed31385263e390eeace78","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.10.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGW4o2Kk2aSFkLlRpq77S9YTwRBZtpn++bxRX2As2n/AiEArf/DPklulSg/BHKSw17M79idDD05RhrfVYJRtNOh460="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.10.tgz_1517472508262_0.8152556775603443"},"directories":{}},"0.1.11":{"name":"crazy-crawler","version":"0.1.11","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0","cookie":"0.3.1"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"62ccbf2b29e4b3f2087433f7acc8f9e08277d2a1","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.11","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-PWGwl+XhrAf3SQv0wtM06ikZ2pZoNp72vl5Eb7B/mThWuFqq58RvlWLTehGjYYWLc8KI4Ofng4GTTzW32nlgCw==","shasum":"6d986f5990688579121a102c75b3a74a14e26c93","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.11.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUfbirtNo0lm+I1jBMcDL2lBCiQ7Um9/IhYtRjnIDj3AiEA4duBWgaE1O+Wb7cCUpHdsCx7OX2XxEDx7m59+lglzYY="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.11.tgz_1517483877733_0.2590110939927399"},"directories":{}},"0.1.12":{"name":"crazy-crawler","version":"0.1.12","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0","cookie":"0.3.1"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"62ccbf2b29e4b3f2087433f7acc8f9e08277d2a1","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.12","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-wdlOH8KT7QUbKnjLBFK9vc1aQEGV+3zHnpd1leZiBOvC8J6BLKlpwrnQPP03Gc+6vbeFC+J6GGhJY2b2/eEcRQ==","shasum":"39d326619fd5514a1a5f949ca7690d5bb02250e3","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.12.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICO8McC9L4jdaLzBk1IkLSGVR8Mcv0QQAnWDqGoWCFnWAiBzbdoN4iDj+mCFrLov7ZVhGfuIjYBuL/x26le6UwTqkA=="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.12.tgz_1517485144944_0.7372571520972997"},"directories":{}},"0.1.13":{"name":"crazy-crawler","version":"0.1.13","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","node-schedule":"^1.3.0","cookie":"0.3.1"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"gitHead":"62ccbf2b29e4b3f2087433f7acc8f9e08277d2a1","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.1.13","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-haoSZs4EpYvxocFxPOHlfCik/B58OMsy0NzT4nexOdbD/ar7uHDm4SW8id7QYwDSlFJXV6jvsbg44V6ZyN/78Q==","shasum":"4072c90497941d9936d6e595614459169a1fa272","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.1.13.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvNlgBYZrTJDwnrpBMlmQTHwwR6E5qz2KI1c6MSDjXswIhAK4xcctOZMbn2g5ShvUZxads7fJ+f3l0y00WT0R8VSPV"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler-0.1.13.tgz_1517543875621_0.5971716430503875"},"directories":{}},"0.2.0":{"name":"crazy-crawler","version":"0.2.0","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js","coverage":"nyc mocha -t 4000"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","cookie":"0.3.1","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.4","nyc":"^11.4.1"},"gitHead":"8aa19fdd1823ed4bc79ec1dc66dac9318eb0d6e6","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.2.0","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-oixAirmO1gxMoMhkBZN57F106MAfwjT5yY2oy12KRJyDRPqa2xTo3ZQlF86uFROMvN50JWr9pHzp9n0Q9+XBhw==","shasum":"3e736c529dd68bfe5119ddff4bae63a715ccb4e2","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.2.0.tgz","fileCount":21,"unpackedSize":38861,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSIavRe4afVVnnqQoMg01z7ggf/kcngtHXZ08z26WYLAIgfAVNfN6m0QpSZBiKruQ+KqkqqF62ZWTMt5LThH3jan8="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler_0.2.0_1520853348975_0.6012238160892995"},"_hasShrinkwrap":false},"0.2.1":{"name":"crazy-crawler","version":"0.2.1","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js","coverage":"nyc mocha -t 4000"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","cookie":"0.3.1","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.4","nyc":"^11.4.1"},"gitHead":"8ce3d4dbb274374cfaba70d4f322cd23dd7ceccd","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.2.1","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-WyeS00PajEum8s/J4T+/T/jzsFGkAQI0JS3AzXXOKd6VGfHNfsdsMBlfkt/ngUXdJnpp5JpJu5bzBzg3oY3ZbQ==","shasum":"a47ed6ccff4702c38a4a762fa3212aa71c21ffc7","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.2.1.tgz","fileCount":21,"unpackedSize":46987,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxctpFvhkU3jUMSmK+t67iEvLl7WghFaQ5Y5i9K9NSnAIhAMtQeOwthUe36FSxMBS6t+r9Hv24UIknCQVYf5733KI2"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler_0.2.1_1521008167370_0.027652978368681636"},"_hasShrinkwrap":false},"0.2.2":{"name":"crazy-crawler","version":"0.2.2","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"example":"node ./example/app.js","coverage":"nyc mocha -t 4000"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","cookie":"0.3.1","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.4","nyc":"^11.4.1"},"gitHead":"fa07d9d938c0e1c0b2682e9bce9edf51a09f3135","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.2.2","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-OSKv18n+3pZX230n1s6zmlJvP6+4OMgL3IQzBl9mWZ/p6zta3I4pL0uX4cuD8ZlcqIv032yxAQEFz2l2F+2ifA==","shasum":"734cec7ed1af006c520a44c35240e181bfa2c34f","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.2.2.tgz","fileCount":21,"unpackedSize":47074,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWCchPuH4t0zzTQss6jSvTh8XlHvsFFmOErP0DHMpSQAIhAP7Vsi46q7x08qPhRBWU5NorZspwmhq6mdjK5BIEIqgG"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler_0.2.2_1521034698062_0.23217782194433734"},"_hasShrinkwrap":false},"0.2.3":{"name":"crazy-crawler","version":"0.2.3","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"coverage":"nyc mocha -t 4000"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","cookie":"0.3.1","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.4","nyc":"^11.4.1"},"gitHead":"c7e6df44d6036a7c952def27730d54bd708e0c2a","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.2.3","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-U5sMNYFKVF/fNz4+SuEWFu9drrvcBfMEYKuBVmEjmiDN+hRAU4H4q0EkpNwRq3yK2SJBDAetmfVZESY0zrrSVg==","shasum":"bd57db3d4c3a8eae0da9c23cdee9b252c2f9cd30","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.2.3.tgz","fileCount":24,"unpackedSize":50436,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw1t1Dp/cih535NJ29EKDlfVQ4//XBZlZywLGkURHCXQIhAIv926Doy5m3NnQ0+UzU6+6QcEQxswl4ZZMhqu9/54ZA"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler_0.2.3_1521169177952_0.16290574097075905"},"_hasShrinkwrap":false},"0.2.4":{"name":"crazy-crawler","version":"0.2.4","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"coverage":"nyc mocha -t 4000"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","cookie":"0.3.1","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.4","nyc":"^11.4.1"},"gitHead":"d9bd5306176028fd726bf4e6590e4d7c17192eb1","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.2.4","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-4Q9i8vwvFB8qhqvqXH/5dC6Tr/5B3rVbmgkZsZlS+ryGKEh33isA3rR+qY2tDyzSNxBW2gLK/qbhnP5maN0moA==","shasum":"67b338496be01b55a7378bca71dffc55a092d9b8","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.2.4.tgz","fileCount":24,"unpackedSize":50254,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4oRZ1DIDnBnQ/Rt5cC9T6HnpPEKT0zIHISHu3Az9pEAIhAOfVzE0QbUmtRzhCYc+7EZj/I738SN/N6aUWf7SaW+ZL"}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler_0.2.4_1521278572842_0.7095596769503085"},"_hasShrinkwrap":false},"0.3.0":{"name":"crazy-crawler","version":"0.3.0","description":"crawl everything by this","main":"index.js","keywords":["crawler"],"scripts":{"coverage":"nyc mocha -t 4000"},"author":{"name":"bestnathan"},"dependencies":{"axios":"^0.17.1","cheerio":"^1.0.0-rc.2","cookie":"0.3.1","node-schedule":"^1.3.0"},"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.4","nyc":"^11.4.1"},"gitHead":"5b82b1e3be1bcf06e052e5bda98d9a843f727101","bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","_id":"crazy-crawler@0.3.0","_npmVersion":"5.6.0","_nodeVersion":"8.6.0","_npmUser":{"name":"bestnathan","email":"308719298@qq.com"},"dist":{"integrity":"sha512-GFcws96ea5GKBdsTn3AIG5FO5Ql3gQKaK7qEXjtJQlcpAJANlEiRcMFMASTMMyZFQEa23zk+yUFlWqu/rVBfVA==","shasum":"8f47fd767402868686f513ac784d2416abcfc0b6","tarball":"https://registry.npmjs.org/crazy-crawler/-/crazy-crawler-0.3.0.tgz","fileCount":24,"unpackedSize":51828,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3qUeCRA9TVsSAnZWagAAu1oP/jsC48cLzlgmuyBmKhX2\nA9ZEqRUZuVZ3DUfOTtozx1r06l5MwWYOn9RKuwFMmqJjWzmLay6e9xdZepEy\nFwxlrwNJ1ERCKLDlYL8CDB3BRMat/aniEflrJFHt+gVRckF5U87/UEi6JzQB\npKLkdIO0AOADQXkDh+qE7GWn0ZCFjIdg6Cvioo7+bFuNbEbx5w1Jvs3qQXVP\nEPqhzwv2tJDyunkLQ6QcF4Kxho5UQ1QnHsmrtlmulHiiojwQjnYNiK9wUTEm\nrBHuSn5x33E8Jo+0wzXKUNl+MGFzOvmLvShwu7l+g2Fax0zidCp+rkgzxkIN\nupOnX5NC6uIn6KESOSbdkRZtyDXhg1DlSLZs2gNLEGxSrdBpm7gOsb6wzjnw\ndlyZ0a5XLHBmZpzljpFZq1XUUwpp2NVP6BWtIxWio0F12yrm4BtkBBHDGdO+\nPGYk/AuO/Zh4TTHSmkndY27Hg7hacwlDVpPjdCFo8cv5VOvpTKs5suhnVkGa\nAaLXrLTCDZ7ArC++x0FEHCQ9ZfO7p3jt+VyJmFJbv0TUmod4uAD0sb+EjpKe\nO+wl2XgbvXNOIoYgPJNzP4FqVVDsuQNQwxZiDL59nADOqaJEnH1zKRMIRTZx\n6BqL8s8YWfEzIILT1l1CNzaP87uJuAnPTEMhZykeUeKY/eA3jPMml8RwNlTO\n4svq\r\n=2Gm6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFShwSDk4EVr3im29yhvoViRQfaRB9wLvPsTvduxTGlZAiEA3VJcZmatM7SgfmfkdZ3RWMYgnYhTMwPTVRUT9uH+mzk="}]},"maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/crazy-crawler_0.3.0_1524540701432_0.440583968998598"},"_hasShrinkwrap":false}},"readme":"# crazyCrawler 2.0\r\n\r\ncrawl everything by this\r\n\r\n# Usage(使用方法)\r\n\r\n## install(安装)\r\n\r\n```bash\r\nnpm install crazy-crawler\r\n```\r\n\r\n## require(引用)\r\n\r\n```js\r\nconst { CrazyCrawler, Task, TaskChain } = require('crazy-crawler')\r\n\r\nconst crawler = new CrazyCrawler({ maxTask: 5, sleep: 100 })\r\n\r\ncrawler.on('done', () => {\r\n\t// crawler finish working\r\n})\r\n```\r\n\r\n## create crawler task (创建爬虫任务)\r\n\r\n```js\r\nconst task = new Task({\r\n\tname: 'example',\r\n\turl: 'http://www.baidu.com',\r\n\thandler: function(response) {\r\n\t\t// response is axios response\r\n\t\tconsole.log(response.data) //data of axios response\r\n\t\tconsole.log(response.task.name) // example\r\n\t},\r\n\terrorHandler: function(err) {\r\n\t\t// when error occurs in HTTP request this handler will be invoked\r\n\t}\r\n})\r\n```\r\n\r\n## queue task to crawler and run (将任务加入到爬虫队列并运行)\r\n\r\n```js\r\ncrawler.queueTask(task).run() // run crawler\r\n```\r\n\r\n## craete crawler taskChain (创建爬虫任务链)\r\n\r\n```js\r\nconst taskChain = new TaskChain()\r\n\r\nconst firstTask = new Task({\r\n\tname: 'first',\r\n\turl: 'http://www.baidu.com',\r\n\tbeforeTask: function({ lastTask, task, state }) {\r\n\t\t// if this task is the first task of the task chain\r\n\t\t// lastTask will be undefined\r\n\t\t// task is the task will be executed\r\n\t\t// state is the property of taskChain\r\n\t\t// and used by every task\r\n\t\tconsole.log(task.name) // first\r\n\t\tstate.firstStatus = 'before'\r\n\t},\r\n\tafterTask: function({ task, state, response }) {\r\n\t\t// response is axios response and the same as response in handler\r\n\t\tconsole.log(state.firstStatus) // before\r\n\t\tstate.firstStatus = 'finish'\r\n\t}\r\n})\r\n\r\nconst secondTask = new Task({\r\n\tname: 'second',\r\n\turl: 'http://www.baidu.com',\r\n\tbeforeTask: function({ lastTask, task, state }) {\r\n\t\tconsole.log(lastTask.name) // first\r\n\t\tconsole.log(state.firstStatus) // finish\r\n\t},\r\n\tafterTask: function({ task, state, response }) {\r\n\t\t// response is axios response and the same as response in handler\r\n\t\tconsole.log(response.task.name) // second\r\n\t}\r\n})\r\n\r\ntaskChain.queue([firstTask, secondTask])\r\n```\r\n\r\n## queue taskChain to crawler and run (将任务链加入到爬虫队列并运行)\r\n\r\n```js\r\ncrawler.queueTask(taskChain).run() // run crawler\r\n```\r\n\r\n# examples\r\n\r\n## repeat task\r\n\r\n* example 1\r\n\r\n```js\r\nconst crawler = new CrazyCrawler({ maxTask: 5, sleep: 100 })\r\nlet counter = 0\r\n\r\ncrawler.on('done', () => {\r\n\tconsole.log(counter) // 3\r\n})\r\n\r\nconst repaetTask = new Task({\r\n\tname: 'repeat',\r\n\turl: 'http://example.com',\r\n\thandler: function(response) {\r\n\t\tcounter++\r\n\t},\r\n\trepeat: true,\r\n\tlimit: 3\r\n})\r\n\r\ncrawler.queueTask(repaetTask).run()\r\n```\r\n\r\n* example 2\r\n\r\n```js\r\nconst crawler = new CrazyCrawler({ maxTask: 5, sleep: 100 })\r\nlet counter = 0\r\n\r\ncrawler.on('done', () => {\r\n\tconsole.log(counter) // 4\r\n})\r\n\r\nconst repaetTask = new Task({\r\n\tname: 'repeat',\r\n\turl: 'http://example.com',\r\n\thandler: function(response) {\r\n\t\tcounter++\r\n\t},\r\n\trepeat: true,\r\n\tlimit: 2\r\n})\r\n\r\nconst repaetTask1 = new Task({\r\n\tname: 'repeat',\r\n\turl: 'http://example.com',\r\n\thandler: function(response) {\r\n\t\tcounter++\r\n\t},\r\n\trepeat: true,\r\n\tlimit: 2\r\n})\r\n\r\ncrawler\r\n\t.queueTask(repaetTask)\r\n\t.queueTask(repaetTask1)\r\n\t.run()\r\n```\r\n\r\n## functional task\r\n\r\n* example 3\r\n\r\n```js\r\nconst crawler = new CrazyCrawler({ maxTask: 5, sleep: 100 })\r\nlet counter = 0\r\n\r\ncrawler.on('done', () => {\r\n\tconsole.log(counter) // 2\r\n})\r\n\r\nconst functionalTask = new Task({\r\n\tname: 'functional',\r\n\tbaseUrl: 'http://example.com/:id',\r\n\tparamSetters: {\r\n\t\tid: function(counter) {\r\n\t\t\treturn counter + 123\r\n\t\t\t// url will be http://example.com/123 http://example.com/124 ...\r\n\t\t}\r\n\t},\r\n\thandler: function(response) {\r\n\t\tcounter++\r\n\t},\r\n\tfunctional: true,\r\n\tlimit: 2\r\n})\r\n\r\ncrawler.queueTask(functionalTask).run()\r\n```\r\n\r\n## functional and repeat task\r\n\r\n* example 4\r\n\r\n```js\r\nconst crawler = new CrazyCrawler({ maxTask: 5, sleep: 100 })\r\nlet counter = 0\r\n\r\ncrawler.on('done', () => {\r\n\tconsole.log(counter) // 4\r\n})\r\n\r\nconst functionalTask = new Task({\r\n\tname: 'functional',\r\n\tbaseUrl: 'http://example.com/:id',\r\n\tparamSetters: {\r\n\t\tid: function(counter) {\r\n\t\t\treturn counter + 123\r\n\t\t\t// url will be http://example.com/123 http://example.com/124 ...\r\n\t\t}\r\n\t},\r\n\thandler: function(response) {\r\n\t\tcounter++\r\n\t},\r\n\tfunctional: true,\r\n\tlimit: 2\r\n})\r\n\r\nconst repaetTask = new Task({\r\n\tname: 'repeat',\r\n\turl: 'http://example.com',\r\n\thandler: function(response) {\r\n\t\tcounter++\r\n\t},\r\n\trepeat: true,\r\n\tlimit: 2\r\n})\r\n\r\ncrawler\r\n\t.queueTask(functionalTask)\r\n\t.queueTask(reapeatTask)\r\n\t.run()\r\n```\r\n\r\n# API\r\n\r\n## CrazyCrawler\r\n\r\n### CrazyCrawler.constructor({ maxTask, sleep })\r\n\r\n* maxkTask: max tasks downloader execs at the same time\r\n* sleep: sleep between every task\r\n\r\n### CrazyCrawler.queueTask(task: Task | TaskChain)\r\n\r\n* add `task` or `taskChain` to crawler\r\n\r\n### CrazyCrawler.run()\r\n\r\n* run crawler\r\n\r\n### events\r\n\r\n#### done\r\n\r\n* when crawler finish working 'done' event will be emitted\r\n\r\n## Task\r\n\r\n### Task.constructor({...options})\r\n\r\n#### basic options(基础选项)\r\n\r\n* name: the name of task\r\n* url: target url\r\n* method: default to 'get'\r\n* data: only work with `method` is post, can be plain object or string\r\n* headers: can be plain object or string\r\n* cookies: cookie object, if `headers` not exist 'Cookie' property, then use `cookies` options\r\n* axiosOptions: any axios supported options, include `url`,`method`, `data`, `headers`\r\n* handler: to handle `response` if success, parameter is axios response\r\n* errorHandler: to handle error if any `Error` occurs in axios progress\r\n* fakeIP: by add 'X-Forword-For' and 'CLIENT_IP' with random IP to `headers`\r\n* repeat: specific task is repeat\r\n* limit: work with task is `repeat` or `functional`, number or function\r\n\r\n#### functional task options(函数式任务选项)\r\n\r\n* functional: sepecific task is functional\r\n* baseUrl: generate `url` from baseUrl\r\n* baseData: generate `data` from baseData\r\n* paramSetters: sepecific properties to be generated to `url` and `data`\r\n* baseUrlPattern: how to find where to be replaced with generated param\r\n\r\n#### task in chain options(任务链有效的选项)\r\n\r\n* inChain: specific task is working in chain\r\n* beforeTask: invoke before axios progress and you can modify the task\r\n* afterTask: invoke after axios progress and you can store some useful data to use in chain\r\n\r\n### Task.exec()\r\n\r\nrun task\r\n\r\n### Task.CheckLimit()\r\n\r\ncheck if task is over `limit`\r\n\r\n### Task.copy()\r\n\r\nreturn a task with `coptFrom` property of this task\r\n\r\n### Task.repeatTask()\r\n\r\nreturn a task like this task\r\n\r\n### Task.generateTask()\r\n\r\nif task is `functional` this will return a generated task with functional options,\r\notherwise return `this.copy()` with this task\r\n\r\n## TaskChain\r\n\r\n### TaskChain.constructor({ repeat, functional, limit })\r\n\r\n* repeat: sepecific this task chain is repeat chain\r\n* limit: times to repeat, not work with functional\r\n* functional: sepecific this task chain is functional\r\n\r\n### TaskChain.queue(task)\r\n\r\nqueue tasks to `exec` in chain, order is the order with queue\r\n\r\n### TaskChain.toTask()\r\n\r\nto `Task`\r\n\r\n### TaskChain.checkLimit()\r\n\r\nif `reapet` this will check if over `limit`, if functional this will invoke `checkLimit` of every task in chain to check\r\n\r\n### TaskChain.generateTaskChain()\r\n\r\nif `functional`, this will invoke `generateTask` of every task in chain and push them to a new `TaskChain`, then return this new chain\r\n\r\n### TaskChain.repeatTaskChain()\r\n\r\nif `repeat`, this will return a new `TaskChain` based on this `taskChain`\r\n\r\n# welcome pull request\r\n\r\n# Lisence\r\n\r\nMIT\r\n","maintainers":[{"name":"bestnathan","email":"308719298@qq.com"}],"time":{"modified":"2022-04-27T19:55:11.896Z","created":"2018-01-25T05:34:11.095Z","0.1.0":"2018-01-25T05:34:11.095Z","0.1.1":"2018-01-26T04:03:15.316Z","0.1.2":"2018-01-26T13:06:16.288Z","0.1.3":"2018-01-27T09:53:22.709Z","0.1.4":"2018-01-28T07:13:13.605Z","0.1.5":"2018-01-28T08:03:49.101Z","0.1.6":"2018-01-29T08:07:49.285Z","0.1.7":"2018-01-31T02:53:43.131Z","0.1.8":"2018-02-01T07:03:53.828Z","0.1.9":"2018-02-01T08:06:38.849Z","0.1.10":"2018-02-01T08:08:28.333Z","0.1.11":"2018-02-01T11:17:57.818Z","0.1.12":"2018-02-01T11:39:05.068Z","0.1.13":"2018-02-02T03:57:55.722Z","0.2.0":"2018-03-12T11:15:49.058Z","0.2.1":"2018-03-14T06:16:07.466Z","0.2.2":"2018-03-14T13:38:18.138Z","0.2.3":"2018-03-16T02:59:38.021Z","0.2.4":"2018-03-17T09:22:52.938Z","0.3.0":"2018-04-24T03:31:41.517Z"},"homepage":"https://github.com/BestNathan/crazyCrawler#readme","keywords":["crawler"],"repository":{"type":"git","url":"git+https://github.com/BestNathan/crazyCrawler.git"},"author":{"name":"bestnathan"},"bugs":{"url":"https://github.com/BestNathan/crazyCrawler/issues"},"readmeFilename":"README.md"}