diff options
Diffstat (limited to 'digikey_scraping')
-rw-r--r-- | digikey_scraping/digikey.coffee | 35 | ||||
-rwxr-xr-x | digikey_scraping/digikey.js | 51 |
2 files changed, 86 insertions, 0 deletions
diff --git a/digikey_scraping/digikey.coffee b/digikey_scraping/digikey.coffee new file mode 100644 index 0000000..f1a9580 --- /dev/null +++ b/digikey_scraping/digikey.coffee @@ -0,0 +1,35 @@ +webpage = require('webpage') +server = require('webserver').create() +query_parse = /search\/([^&]+)/ + +url = 'http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=' + +service = server.listen 8086, (request, response) -> + page = webpage.create() + + search = query_parse.exec request.url + + unless search? and search[1]? + console.log "Invalid URL: "+request.url + response.statusCode = 404 + response.write "try search/componentname" + response.close() + return + + console.log search[1] + + thisUrl = url + search[1] + tries = 0 + page.open thisUrl, (status) -> + if status != "success" + response.statusCode = 503 + response.write "MORT ET DESOLATION" + response.close() + else + if page.evaluate(-> typeof test == "function") + page.evaluate -> test() + console.log "TRYING AGAIN (try " + (tries += 1) + ")" + else + response.statusCode = 200 + response.write page.content + response.close() diff --git a/digikey_scraping/digikey.js b/digikey_scraping/digikey.js new file mode 100755 index 0000000..ca4bc81 --- /dev/null +++ b/digikey_scraping/digikey.js @@ -0,0 +1,51 @@ +#!/usr/local/phamtomjs-1.6.1/bin/phantomjs + +// Generated by CoffeeScript 1.3.3 +(function() { + var query_parse, server, service, url, webpage; + + webpage = require('webpage'); + + server = require('webserver').create(); + + query_parse = /search\/([^&]+)/; + + url = 'http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name='; + + service = server.listen(8086, function(request, response) { + var page, search, thisUrl, tries; + page = webpage.create(); + search = query_parse.exec(request.url); + if (!((search != null) && (search[1] != null))) { + console.log("Invalid URL: " + request.url); + response.statusCode = 404; + response.write("try search/componentname"); + response.close(); + return; + } + console.log(search[1]); + thisUrl = url + search[1]; + tries = 0; + return page.open(thisUrl, function(status) { + if (status !== "success") { + response.statusCode = 503; + response.write("MORT ET DESOLATION"); + return response.close(); + } else { + if (page.evaluate(function() { + return typeof test === "function"; + })) { + page.evaluate(function() { + return test(); + }); + return console.log("TRYING AGAIN (try " + (tries += 1) + ")"); + } else { + response.statusCode = 200; + response.write(page.content); + return response.close(); + } + } + }); + }); + +}).call(this); |