{"_id":"node-scrapy","_rev":"37-6f9104f301e93a7b7393d8d348962c45","name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","dist-tags":{"latest":"0.5.0","next":"0.4.0-alpha.1"},"versions":{"0.2.0":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","tags":["web","html","scraping","scrape","scraper","scrapy","crawler"],"version":"0.2.0","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"https://github.com/eeshi/node-scrapy"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 0.8.0"],"main":"index.js","dependencies":{"request":"~2.46.0","cheerio":"~0.17.0"},"gitHead":"a0961ad879bf781f09500ef4bebefa278384ff47","_id":"node-scrapy@0.2.0","scripts":{},"_shasum":"67b07c6e59123df204b4c5f697e2b0704d7799c3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"dist":{"shasum":"67b07c6e59123df204b4c5f697e2b0704d7799c3","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.2.0.tgz","integrity":"sha512-WfuaZWg+MJ1ur7R8F1AxK8NPYcNmggP6FI/1BFWXv5K3IvPUGB7wlpEkDNNl5V789uCnqZY/+TzwCTectJFDTw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK8+Cq54nFXkSkWbGUlLO2YFymCF5LpdVboXQsd1CMogIhAIYxLbGcOgWvU69Q9O/b76qQXEBT6UPG0b5KB0xw25xE"}]},"directories":{}},"0.2.1":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","scraping","scrape","scraper","scrapy","crawler"],"version":"0.2.1","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"https://github.com/eeshi/node-scrapy"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 0.8.0"],"main":"index.js","dependencies":{"cheerio":"~0.18.0","request":"^2.46.0"},"gitHead":"28b559d4136e35f53a00f97dcfc9f4934ef0e2fc","_id":"node-scrapy@0.2.1","scripts":{},"_shasum":"a5d034d84126730757ee0f4f74a8e3d055fcb55f","_from":".","_npmVersion":"2.1.16","_nodeVersion":"0.10.34","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"dist":{"shasum":"a5d034d84126730757ee0f4f74a8e3d055fcb55f","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.2.1.tgz","integrity":"sha512-QE97BwdhGsLOkmiNLkm4gjPzui//ELE8xBXR1eccLnPsb3RJbBPyl/f17orxM+sg9+DeRcGkxovRebGrEfiVdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICdUC+I9ErZcmBjJ3ijiCU96wuOBtdTOjQAyF7xy+fYxAiBGndoVoqcaXvqMjUpCNEST2NKt6CRml0yqmgYAwsY+iA=="}]},"directories":{}},"0.2.2":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","scraping","scrape","scraper","scrapy","crawler"],"version":"0.2.2","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 0.8.0"],"main":"index.js","dependencies":{"cheerio":"~0.19.0","request":"^2.46.0"},"gitHead":"26cd8f8d4df642eed411ebd8afb7911c3aa93c36","_id":"node-scrapy@0.2.2","scripts":{},"_shasum":"0a11b62bb3429706e713878360471a6d663081d8","_from":".","_npmVersion":"2.14.2","_nodeVersion":"0.12.7","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"dist":{"shasum":"0a11b62bb3429706e713878360471a6d663081d8","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.2.2.tgz","integrity":"sha512-XPVcUnF+PH6mbk6669K9oRhtHrAlhuIzbB9pRpzqh1zIeNA5VjyEf5kXFuz7e0dbGASRdW/weJGA11x31+1BYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICAeFHI2/6TLm+nzsfnTBdjFSyKNWwieM10QvXr8DP3uAiEAkjNH/ef+8nz8vo+H+ma1xeRDoV3B1bxEUWIVJG5pjmg="}]},"directories":{}},"0.2.3":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","scraping","scrape","scraper","scrapy","crawler"],"version":"0.2.3","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 0.8.0"],"main":"index.js","dependencies":{"cheerio":"~0.19.0","request":"^2.46.0"},"gitHead":"0929997b60f61d0a43a844208c4a12679de19512","_id":"node-scrapy@0.2.3","scripts":{},"_shasum":"edae27cff172ee686b7ab4da642af215c321a3b2","_from":".","_npmVersion":"2.14.20","_nodeVersion":"4.3.1","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"dist":{"shasum":"edae27cff172ee686b7ab4da642af215c321a3b2","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.2.3.tgz","integrity":"sha512-yxdF5ZsZe7ZIjPXz6jjprl3qieDPoxhY0IRYTGPZ46+gv8EgTQuhy3GE8Z7v1gwC6vX1SyZj0+HIA9zLJ5ejwQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQJMD3AiQ+St5f+FCEfe73PeU4397pJk00wD8td2zoOAIgcRhEuwwF4PJXh0eZInhiMUhWFIh0mkLu+pwd03Njv6s="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-scrapy-0.2.3.tgz_1457395467150_0.8797165199648589"},"directories":{}},"0.3.0":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","scraping","scrape","scraper","scrapy","crawler"],"version":"0.3.0","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 0.8.0"],"main":"index.js","dependencies":{"cheerio":"~0.19.0","request":"^2.46.0"},"gitHead":"6a8e1a727019da56789abfba058bb722669b1cc9","_id":"node-scrapy@0.3.0","scripts":{},"_shasum":"42125ab8b91a5af3dcbf79e8a8ff7d4e06301a24","_from":".","_npmVersion":"3.10.8","_nodeVersion":"4.5.0","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"dist":{"shasum":"42125ab8b91a5af3dcbf79e8a8ff7d4e06301a24","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.3.0.tgz","integrity":"sha512-4v9Zf9oOdk14yPfKTg8jQ1i+zQuKsCvlXC9lt6bPUBtL082H4YBZc1a6zXwUIQ91ESwcv6B2wYFee/BtBdpu3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1KhTYxAXGTxkI0XR8gbcTkm/gECYtpkgaOWGm28wuIAIgOgxI0zVYSVimH7IkaYJabRz50A0mMuZlAEOTL6lH/Cw="}]},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-scrapy-0.3.0.tgz_1475163143422_0.2885962435975671"},"directories":{}},"0.4.0-alpha.0":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","eslintConfig":{"plugins":["standard"],"extends":["standard"]},"keywords":["web","html","css","selector","scraping","scrape","scraper","scrapy","crawler"],"version":"0.4.0-alpha.0","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 4.0.0"],"main":"index.js","dependencies":{"css-select":"^1.2.0","htmlparser2":"^3.9.2","lodash.isplainobject":"^4.0.6","lodash.isstring":"^4.0.1"},"devDependencies":{"echint":"^2.1.1","eslint":"^3.12.2","eslint-config-standard":"^6.2.1","eslint-plugin-promise":"^3.4.0","eslint-plugin-standard":"^2.0.1","tap":"^8.0.1"},"scripts":{"test":"echint && eslint . && tap test/*.test.js"},"gitHead":"089c0206572816c95b7cd007d917ed1d3f45b007","_id":"node-scrapy@0.4.0-alpha.0","_shasum":"eaa683dc57f8c652f999f6ab2c5ae1dfbd2e7eca","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.2","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"dist":{"shasum":"eaa683dc57f8c652f999f6ab2c5ae1dfbd2e7eca","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.4.0-alpha.0.tgz","integrity":"sha512-WCcGe/Lvmm7iiOj9z/P+HRjmMj+PmqHMYY+IwXA7NfJc4NXPUXBPJHsK0a8ZH4LZnPfb96BbtRurJM+9DeTJVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC1jADOc3TIfIu0fFLJT035JYgcbPfJgtAacl/wBzXt6AiBfGrEV5dkJoe9OMthH734t6+7QdwCDx3MgViZPcI5dhQ=="}]},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/node-scrapy-0.4.0-alpha.0.tgz_1483669858908_0.3841832436155528"},"directories":{}},"0.3.1":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","scraping","scrape","scraper","scrapy","crawler"],"version":"0.3.1","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 0.8.0"],"main":"index.js","dependencies":{"cheerio":"~0.19.0","request":"^2.46.0"},"gitHead":"071f29ac5cc6eab0e3f4919709002a3bdbfc19ad","_id":"node-scrapy@0.3.1","scripts":{},"_shasum":"ac6b0e95f94e29e90793cc932655e28253252e18","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"dist":{"shasum":"ac6b0e95f94e29e90793cc932655e28253252e18","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.3.1.tgz","integrity":"sha512-NdGXeoXJVdpHSez+3VZgPCDnqmNezd5E9MMyeCKiJMoSsWYPYjxWu5ClEqTvVzq4mzekD1O+T9yU0joQCNdYYQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGtk3K5bFby3zVlR8ak8ldHgrztE3NpO1pD4qzveQNATAiEA0LWjtsLBzu91U9hCbSPYfZa3oq1dmHkpYICDNetIFr8="}]},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-scrapy-0.3.1.tgz_1484189571749_0.8403677786700428"},"directories":{}},"0.4.0-alpha.1":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","eslintConfig":{"plugins":["standard"],"extends":["standard"]},"keywords":["web","html","css","selector","scraping","scrape","scraper","scrapy","crawler"],"version":"0.4.0-alpha.1","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"http://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":["node >= 4.0.0"],"main":"lib/index.js","dependencies":{"css-select":"^1.2.0","dom-serializer":"^0.1.0","htmlparser2":"^3.9.2","lodash.isplainobject":"^4.0.6","lodash.isstring":"^4.0.1"},"devDependencies":{"echint":"^4.0.1","eslint":"^3.14.1","eslint-config-standard":"^6.2.1","eslint-plugin-promise":"^3.4.0","eslint-plugin-standard":"^2.0.1","tap":"^10.0.0"},"scripts":{"test":"echint && eslint . && tap test/**.test.js test/**/*.test.js"},"gitHead":"4c9c53dae4b5c1590619db79c02dc7bb8dcba217","_id":"node-scrapy@0.4.0-alpha.1","_shasum":"b602e7f09cb9edca05e443cdb021f3b737248331","_from":".","_npmVersion":"4.4.0","_nodeVersion":"6.9.5","_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"dist":{"shasum":"b602e7f09cb9edca05e443cdb021f3b737248331","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.4.0-alpha.1.tgz","integrity":"sha512-4VFGq6/MicGUCfpGhq70lbH99W2wr88nY28JzGKqRzB9zksELPyBFJ/xtLmJsfPDkKqVN/PIcUyQjkjRpeScGw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCF0YKwvC/tfBZjfU1csJuJqfZ0dhe6ZBeZWCW7cPnQ6QIhAL5hitmwHw4CT70VEWjVXHqWf5DymqU0quLOXbk1B65d"}]},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-scrapy-0.4.0-alpha.1.tgz_1488234566414_0.4716399454046041"},"directories":{}},"0.4.0-beta.1":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","css","selector","scraping","scrape","scraper","scrapy","crawler"],"version":"0.4.0-beta.1","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"https://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":{"node":">=8.9.0"},"main":"server/index.js","browser":"dist/browser.umd.min.js","dependencies":{"css-select":"^2.0.2","css-select-browser-adapter":"^0.1.2","dom-serializer":"^0.1.1","htmlparser2":"^3.10.1","nearley":"^2.16.0"},"devDependencies":{"@babel/core":"^7.4.0","@babel/preset-env":"^7.4.2","echint":"^4.0.2","eslint":"^5.16.0","eslint-config-airbnb-base":"^13.1.0","eslint-plugin-import":"^2.16.0","prettier-eslint-cli":"^4.7.1","rollup":"^1.7.4","rollup-plugin-babel":"^4.3.2","rollup-plugin-commonjs":"^9.2.2","rollup-plugin-json":"^4.0.0","rollup-plugin-node-resolve":"^4.0.1","tap":"^12.6.1","terser":"^3.17.0"},"echint":{"ignore":["coverage/**","dist/**",".nyc-output/**"]},"sideEffects":false,"scripts":{"prebuild":"npm run grammar","build":"rollup -c -f umd browser/index.js | tee dist/browser.umd.js | terser > dist/browser.umd.min.js","pregrammar":"mkdir -p dist/","grammar":"npx nearleyc lib/query-parser.ne -o dist/grammar.js","format":"prettier-eslint --write './**/*.{js,json,md}'","pretest":"npm run grammar","test":"echint && eslint . && tap 'test/**/*.test.js'","prepublish":"npm run build"},"gitHead":"dcb066bf5c9f319e49eaf98126b94d86a48a06f6","_id":"node-scrapy@0.4.0-beta.1","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-JavLUdH3zNYEpLs0CpMCs43EAnPKNz//Chzz1tqJ2cGmHHe4AzoZuO+duWk0fg9lWBhiqrAAGar9l6Hvm6AB6w==","shasum":"1f6de766493bd285081cfeddf0d3838ed8ede283","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.4.0-beta.1.tgz","fileCount":20,"unpackedSize":205316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcoinsCRA9TVsSAnZWagAA8y0P/1apBClJGdK7zS1TOvI/\nEowErTs1WnpemfP/EYsXl5UwsPU9mLhX4/WkXrE2b74YxZlHUg0raVqZHLyi\nFPkxIxOw7SFwEIjpVSczeG9/XJiInJHmzRo34BctBZEBpMo5QAqMwsbwUFH7\niRk+4F3gm646vWn3MqLj991tVBEz5sMF4wW7cqytChx2974YvcmcJOs/TaQC\nJtvoRcjISlYr5ifjGUzxRSUCIh4+MMPUZnsOsXhv7FuV6/eAAmN7cwk7nDeg\nd979jZftMn5R77hjrAu3GyABp9dVEMlb2bx8fWpa/oGwN0X6w0vJYPj0XveQ\nbMzyeEVuyO+1B060KQrWrtUd5n+G59kYvQhGFz1NtkvJGzKeLk8G2dLnvrIi\nzas4Bg50QLtir9XQb67xFWIHJTbtUCHUoFB+9PtpPK33UNmWg25FpauVKbAe\nCIQTZVCxY2qtOiVpJSICWMRckY4cSU7lVo2AUjvRBaRIzfSp/3P4mpSxpFgG\nVbXJFFBYLORExZClEwwdovUHUe2DOi1Ta6UBzbMgH+ftc5UBLTQzfiZxsTnJ\nNH2QyU/9b0ZyWj2FtV2ee1OAjFTNZcOZsDZARnZSJfxboszzWd+e0nuWsHDv\n+wACWf6xGeyRXhjeFTNlHHnGz/Nv7kDUy+d+oKSx3p7RdolcbMSczUVI45Eu\nF8rk\r\n=+Dlu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvvGQz2s6w+hJj9uUPISqxG/TwO7mCesNejIWE30rSDAiAQ3c1zlTe3syGTSgAEI/e9R0dfz0ai0WPIUAwz5E3e8A=="}]},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-scrapy_0.4.0-beta.1_1554131435867_0.09765491817694127"},"_hasShrinkwrap":false},"0.4.0":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","css","selector","scraping","scrape","scraper","scrapy","crawler"],"version":"0.4.0","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"https://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":{"node":">=8.9.0"},"main":"server/index.js","browser":"dist/browser.umd.min.js","dependencies":{"css-select":"^2.0.2","css-select-browser-adapter":"^0.1.2","dom-serializer":"^1.0.1","htmlparser2":"^4.1.0","nearley":"^2.16.0"},"devDependencies":{"@babel/core":"^7.4.0","@babel/preset-env":"^7.4.2","@rollup/plugin-babel":"^5.2.0","@rollup/plugin-commonjs":"^15.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^9.0.0","@stefanmaric/eslint-config-munchies-base":"^0.3.0","@stefanmaric/eslint-config-munchies-gourmet":"^0.3.0","@stefanmaric/eslint-config-munchies-modern":"^0.3.0","babel-eslint":"^10.1.0","eslint":"^7.7.0","eslint-import-resolver-node":"^0.3.4","eslint-plugin-import":"^2.16.0","prettier":"^2.0.5","rollup":"^2.26.5","tap":"^14.10.8","terser":"^5.2.1"},"sideEffects":false,"scripts":{"prebuild":"npm run grammar","build":"rollup -c -f umd browser/index.js | tee dist/browser.umd.js | terser > dist/browser.umd.min.js","pregrammar":"mkdir -p dist/","grammar":"npx nearleyc lib/query-parser.ne -o dist/grammar.js","format":"prettier --write './**/*.{js,json,md}' && eslint --quiet --fix './**/*.js'","pretest":"npm run grammar","test":"eslint . && tap 'test/**/*.test.js'","prepare":"npm run build"},"gitHead":"2cf8d1b2570ad89967981a31f47ed408496309f2","_id":"node-scrapy@0.4.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5Ck41fcoVK8DkitxTBgIbnF/cp+x0L58OAo5upmsa0lG8dM+3Z39bAGk4HtQFrn7CQHJVTEthLyg8SAkSuQ/VQ==","shasum":"ab3484c6534914873e95d40842c38e11eb6b7ba3","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.4.0.tgz","fileCount":20,"unpackedSize":191917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5bnCRA9TVsSAnZWagAALhoP/2Bwm0XT+RfR8u5i3n1k\nyKUNEicixJoZsgJRK1qK9iYFv8tUPCfnAtutG4Z60xxvI2ScgfZMRCHi8kSq\nWa1aRUSxndqBENW+9eu6yZJ+Q8Rj9u8cOAj/naT/wK7dLgEXWLrJhvmObFWK\nCM+5gNujNb2CjxirzesoJ2AgRh7Ak6CSUabQVQm810bq5fpdGb0oo+PfHJWs\nUvL3AptQuUl3I9Ko2n07RLw+gWU5E3pRfF62FzqsFHsyWD+LUfq6sCkzssF9\n0YlKdjdW+w2hiouq5Q6DPM+HS2b9i0ilkr78vyWdlVIMVM8ZRbobNrlHIWbu\nXsauEghVGq4hN+sv0gSProStPjBIvesH00cR/TaOedLmnH36LNrQRoVwm2w4\nYrCDo5VSig3AmPXm91kHzm7EEHIXoqh8atrxlMRRR1dlUAz52QrkMzgo8h/r\nZ5tAqDzgx6OKxeuDThlCsGcuUHzQUgz6NmeFL9bJjALykAP6Lhqpa08aHEnd\nO3qy5yabCnYiYVadgkdmCrEyVKK/DWzFNQl9PfD1LtF8c5yK4YGIa2dBULLz\nkqZ3HYhan4MOjwxE19rr/7DiNLW+lBEPVib5NHi7lSiE3Sg1ytG+1Yk+vHTx\na5ViMqSPwXovndWgzs/miHKm4FFJsXlLzoG4TuZMdSFxxKZgl8QiZKGPaBHB\nztIA\r\n=n9ym\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdPJNbFmYinYyrQPAWykJBmbQ6916Ez0f2bhb8z7uCtwIgOhiWttj5REwGlpL7ZpUW7RwPawzPfgwNwZp2wTCaNGc="}]},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-scrapy_0.4.0_1598265063298_0.5729676825572114"},"_hasShrinkwrap":false},"0.5.0":{"name":"node-scrapy","description":"Simple, lightweight and expressive web scraping with Node.js","keywords":["web","html","css","selector","scraping","scrape","scraper","scrapy","crawler"],"version":"0.5.0","author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"bugs":{"url":"https://github.com/eeshi/node-scrapy/issues"},"license":"MIT","homepage":"https://github.com/eeshi/node-scrapy","engines":{"node":">=8.9.0"},"main":"server/index.js","browser":"dist/browser.umd.min.js","dependencies":{"css-select":"^2.0.2","css-select-browser-adapter":"^0.1.2","dom-serializer":"^1.0.1","htmlparser2":"^4.1.0","nearley":"^2.16.0"},"devDependencies":{"@babel/core":"^7.4.0","@babel/preset-env":"^7.4.2","@rollup/plugin-babel":"^5.2.0","@rollup/plugin-commonjs":"^15.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^9.0.0","@stefanmaric/eslint-config-munchies-base":"^0.3.0","@stefanmaric/eslint-config-munchies-gourmet":"^0.3.0","@stefanmaric/eslint-config-munchies-modern":"^0.3.0","babel-eslint":"^10.1.0","eslint":"^7.7.0","eslint-import-resolver-node":"^0.3.4","eslint-plugin-import":"^2.16.0","prettier":"^2.0.5","rollup":"^2.26.5","tap":"^14.10.8","terser":"^5.2.1"},"sideEffects":false,"scripts":{"prebuild":"npm run grammar","build":"rollup -c -f umd browser/index.js | tee dist/browser.umd.js | terser > dist/browser.umd.min.js","pregrammar":"mkdir -p dist/","grammar":"npx nearleyc lib/query-parser.ne -o dist/grammar.js","format":"prettier --write './**/*.{js,json,md}' && eslint --quiet --fix './**/*.js'","pretest":"npm run grammar","test":"eslint . && tap 'test/**/*.test.js'","prepare":"npm run build"},"gitHead":"dc18342a193e39fa5405b5f3890611cfb2ee380b","_id":"node-scrapy@0.5.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kOhm6tLxE8X9MCqcVEIfMs1SM+39hMJSky4Vcm6UAKpk5aG7Qx7/YywzoD/t58iBQ0t36IMywe++pYM77OOkvw==","shasum":"2848c6cc6f59412e764ef634241d349a1795080c","tarball":"https://registry.npmjs.org/node-scrapy/-/node-scrapy-0.5.0.tgz","fileCount":20,"unpackedSize":192131,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh21FoCRA9TVsSAnZWagAACT4P/A3SRvrVZt82R1QM3qqa\nDhBW8VAgW58kb6RqIXMqCbuTNbsJT3jr0ENeYN+vnw2zTT0wlwu6lTVFqLHa\nDYmHrdPacKgwNLanSq4OF7/3zLma2cIX27bPXaw5sOecKupBTbLvWwNpR29v\n4RDoIPCL9ULKmtaAnMBTdCUEDY0PANDfri8J8fdXXMn/E2YMFGlYExMBK8RL\n1Qq/LqlBbblwkIRlU732EbWhx5anYLMtGphzsPQ4r89R/BjL/3b/XHflM2rZ\nfGiNGdsQpyDJ4GUmFKkx0spunn854r5HK2YdtiRiXYXOHZ3adzAg7L2RiSzp\nwPSejb42q+JXXoWzEXpMaIl4c9ABjrnp6u3wnEfhtI7seHQnJ9A+GOyy2NCh\njTUyCJZZxs+oJPmjxi7XeBuR0jvLz+h5lmn0bNyb0Raat3x3qU/Rln3J1Xrs\nvIg/y3s0uOl071OJkcsGnjWvk5NSA+NC4lOrLVnZZPJjGdogv2GtWFteOU3W\nPNXg2oy3YY+PDJUcxeZ0VUEPt9CDU7EIHuMWYE98fxSW8VLsf5FyNG9HQy04\n27nW0+J3ocFfvoskEG/EpACqg5CYDozprlmCoQJO3NHQCXnZ8IiwhMfhZaOd\nD6Q/PWu7+x7ax1mm8Ca6P0860meKvvit3PoLAFZ2V2CviNvuQbgmC5sRDp7Q\napUu\r\n=CgKP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeJFwV2FGSs69K+LivcGiKrJYy/pb5uVRfoSvDbr41tQIgZJh2n3+oMPg8HwBk4AJGh2Acs0LJgcHmb69Pp9pmmOQ="}]},"maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"_npmUser":{"name":"stefanmaric","email":"me@stefanmaric.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-scrapy_0.5.0_1598269365391_0.4243635923603657"},"_hasShrinkwrap":false}},"readme":"# node-scrapy\n\nSimple, lightweight and expressive web scraping with Node.js\n\n## Scraping made simple\n\n```javascript\nconst scrapy = require('node-scrapy')\nconst fetch = require('node-fetch')\n\nconst url = 'https://github.com/expressjs/express'\nconst model = '.mb-3.h4 + .f4.mt-3'\n\nfetch(url)\n  .then((res) => res.text())\n  .then((body) => {\n    console.log(scrapy.extract(body, model))\n  })\n  .catch(console.error)\n\n// Fast, unopinionated, minimalist web framework for node.\n```\n\nnode-scrapy can resolve complex objects. Give it a data model:\n\n```javascript\nconst fetch = require('node-fetch')\n\nconst url = 'https://github.com/strongloop/express'\nconst model = {\n  author: '.author ($ | trim)',\n  repo: '[itemprop=\"name\"] ($ | trim)',\n  stats: {\n    commits: '.js-details-container > div:last-child strong',\n    branches: '.octicon-git-branch + strong',\n    releases: 'a[href$=\"/releases\"] > span',\n    contributors: 'a[href$=\"/graphs/contributors\"] > span',\n    social: {\n      watch: '.pagehead-actions > li:nth-child(1) .social-count ($ | trim)',\n      stars: '.pagehead-actions > li:nth-child(2) .social-count ($ | trim)',\n      forks: '.pagehead-actions > li:nth-child(3) .social-count ($ | trim)',\n    },\n  },\n  files: [\n    '.js-active-navigation-container .Box-row > :nth-child(2)',\n    {\n      name: 'a',\n      url: 'a (href)',\n    },\n  ],\n}\n\nfetch(url)\n  .then((res) => res.text())\n  .then((body) => {\n    console.log(scrapy.extract(body, model))\n  })\n  .catch(console.error)\n\n```\n\n...and Scrapy will return:\n\n```javascript\n{\n  author: 'expressjs',\n  repo: 'express',\n  stats: {\n    commits: '5,592',\n    branches: '9',\n    releases: '280',\n    contributors: '261',\n    social: { watch: '1.8k', stars: '49.8k', forks: '8.3k' }\n  },\n  files: [\n    { name: 'benchmarks', url: '/expressjs/express/tree/master/benchmarks' },\n    { name: 'examples', url: '/expressjs/express/tree/master/examples' },\n    { name: 'lib', url: '/expressjs/express/tree/master/lib' },\n    { name: 'test', url: '/expressjs/express/tree/master/test' },\n    { name: '.editorconfig', url: '/expressjs/express/blob/master/.editorconfig' },\n    { name: '.eslintignore', url: '/expressjs/express/blob/master/.eslintignore' },\n    { name: '.eslintrc.yml', url: '/expressjs/express/blob/master/.eslintrc.yml' },\n    { name: '.gitignore', url: '/expressjs/express/blob/master/.gitignore' },\n    { name: '.travis.yml', url: '/expressjs/express/blob/master/.travis.yml' },\n    { name: 'Charter.md', url: '/expressjs/express/blob/master/Charter.md' },\n    { name: 'Code-Of-Conduct.md', url: '/expressjs/express/blob/master/Code-Of-Conduct.md' },\n    { name: 'Collaborator-Guide.md', url: '/expressjs/express/blob/master/Collaborator-Guide.md' },\n    { name: 'Contributing.md', url: '/expressjs/express/blob/master/Contributing.md' },\n    { name: 'History.md', url: '/expressjs/express/blob/master/History.md' },\n    { name: 'LICENSE', url: '/expressjs/express/blob/master/LICENSE' },\n    { name: 'Readme-Guide.md', url: '/expressjs/express/blob/master/Readme-Guide.md' },\n    { name: 'Readme.md', url: '/expressjs/express/blob/master/Readme.md' },\n    { name: 'Release-Process.md', url: '/expressjs/express/blob/master/Release-Process.md' },\n    { name: 'Security.md', url: '/expressjs/express/blob/master/Security.md' },\n    { name: 'Triager-Guide.md', url: '/expressjs/express/blob/master/Triager-Guide.md' },\n    { name: 'appveyor.yml', url: '/expressjs/express/blob/master/appveyor.yml' },\n    { name: 'index.js', url: '/expressjs/express/blob/master/index.js' },\n    { name: 'package.json', url: '/expressjs/express/blob/master/package.json' }\n  ]\n}\n\n```\n\nFor more examples, check the [test folder](./test).\n\n## Install\n\n```shell\nnpm install node-scrapy\n```\n\n## Features\n\n🍠 **Simple**: No XPaths. No complex object inheritance. No extensive config files. Just JSON and the CSS selectors you're used to. Simple as [potatoes](https://youtu.be/efMHLkyb7ho).\n\n⚡ **Lightweight:** node-scrapy relies on [htmlparser2](https://www.npmjs.org/package/htmlparser2) and [css-select](https://www.npmjs.org/package/css-select), known for [being fast](https://travis-ci.org/AndreasMadsen/htmlparser-benchmark/builds/10805007).\n\n📢 **Expressive:** Web scrapping is all about data, so node-scrapy aims to make it declarative. Both, the model and its corresponding output are JSON-serializable.\n\n## Alternatives\n\nHere some alternative nodejs-based solutions similar to node-scrapy (in popularity order):\n\n- [node-crawler](https://github.com/sylvinus/node-crawler)\n- [node-scraper](https://github.com/mape/node-scraper)\n- [skim](https://github.com/tcr/skim)\n- [wscraper](https://github.com/kalise/wscraper)\n- [html-scrapper](https://github.com/harish2704/html-scrapper)\n- [scrapy](https://github.com/orkz/scrapy)\n\n## Contributing\n\nnode-scrapy is in an early stage, we would love you to involve in its development! Go ahead and open a [new issue](https://github.com/eeshi/node-scrapy/issues).\n\n## License\n\n[MIT](./LICENSE) **❤**\n","maintainers":[{"name":"stefanmaric","email":"me@stefanmaric.com"}],"time":{"modified":"2022-06-21T21:25:43.218Z","created":"2014-11-10T08:01:50.417Z","0.2.0":"2014-11-10T08:01:50.417Z","0.2.1":"2014-12-26T20:56:53.829Z","0.2.2":"2015-09-08T19:45:30.916Z","0.2.3":"2016-03-08T00:04:31.195Z","0.3.0":"2016-09-29T15:32:25.314Z","0.4.0-alpha.0":"2017-01-06T02:30:59.647Z","0.3.1":"2017-01-12T02:52:53.978Z","0.4.0-alpha.1":"2017-02-27T22:29:28.234Z","0.4.0-beta.1":"2019-04-01T15:10:36.005Z","0.4.0":"2020-08-24T10:31:03.458Z","0.5.0":"2020-08-24T11:42:45.552Z"},"homepage":"https://github.com/eeshi/node-scrapy","repository":{"type":"git","url":"git+https://github.com/eeshi/node-scrapy.git"},"author":{"name":"Stefan Maric","email":"me@stefanmaric.com"},"bugs":{"url":"https://github.com/eeshi/node-scrapy/issues"},"license":"MIT","readmeFilename":"README.md","users":{"adrianobel":true,"franciskim":true,"khanghoang":true,"rchk":true,"xumakjosh":true,"ones.shader":true,"pt":true,"traveltechymatt":true,"ajsb85":true,"bigp":true,"real_saddy":true,"trinileigh":true},"keywords":["web","html","css","selector","scraping","scrape","scraper","scrapy","crawler"]}