So now I'm trying to make the conversion to Crouton. Of course that is not going well. Here is a chunk of code:
(ns one.core (:gen-class)) (require '[clj-http.client :as client] '[clojure.zip :as z] '[clojure.data.zip :as dz] '[clojure.data.zip.xml :as dzx] '[crouton.html :as html]) (defn get-post-data [url] (client/get url)) (def response (get-post-data login-URL)) (html/parse (:body response)) The *response *value is correct (its the HTML), but when I try to execute the *html/parse* I get: java.io.FileNotFoundException: <html> <head id="Head1"><title> User Login Page <\title> <style> body { color: #000000; font: 12px\1.4 arial,FreeSans,Helvetica,sans-serif; margin: 0; ... TONS OF HTML DELETED ... <\center> <\form> <\body> <\html> (The filename or extension is too long) (Unknown Source) java.io.FileInputStream.open0 FileInputStream.java:195 java.io.FileInputStream.open FileInputStream.java:138 java.io.FileInputStream.<init> ... LOTS OF STACK TRACE DELETED ... I hope someone can help. TIA. On Wednesday, October 14, 2015 at 6:03:29 PM UTC-5, James Reeves wrote: > > I'm not that familiar with Enlive, so I can't comment on the ease of that > approach. > > However, the way I'd personally do it is that I'd make use of Crouton and > the zipper functions in clojure.zip and clojure.data.zip. A zipper is a > functional way of navigating an immutable data structure. > > So first add Crouton and data.zip to your dependencies: > > [[crouton "0.1.2"] > [org.clojure/data.zip "0.1.1"]] > > Then use Crouton to parse the body of the response from clj-http: > > (crouton.html/parse (:body response)) > > This will give you a data structure that's compatible with clojure.xml, > and therefore compatible with the XML zipper functions > > (dzx/xml1-> (z/xml-zip parsed-html) > dz/descendents > (dzx/tag= "input") > (dzx/attr= "name" "foo") > > In the above case I'm using the following namespace aliases: > > (require '[clojure.zip :as z] > '[clojure.data.zip :as dz] > '[clojure.data.zip.xml :as dzx]) > > It's been a while since I've needed to traverse X/HTML in Clojure though, > so my code might be a little off. > > - James > > On 14 October 2015 at 22:53, Mike <mi...@thefrederickhome.name > <javascript:>> wrote: > >> Thanks James! You helped me get another step along the way, I got this >> working. >> >> Of course you mentioned Crouton; you should and I asked for advice on my >> approach. So please allow me to expand the problem statement and you may >> advise me further... >> >> Once I get this HTML parsed, I know that somewhere buried in this page is >> an *<input>* tag that has *name="name"* attribute where I will specify >> the name value at run time. I will need to be able to programmatically >> find this tag and pul some values out of it. Will using *clj-tagsoup* >> or *Crouton *make this location operation easier? Perhaps even using >> *Enlive >> *might make it easier, since the location and path to the tag is not >> known; it must be located. >> >> On Wednesday, October 14, 2015 at 1:53:11 PM UTC-5, James Reeves wrote: >>> >>> >>> Crouton is an alternative HTML parsing library (that's coincidentally >>> written by me) and can be found at: >>> https://github.com/weavejester/crouton >>> >>> Crouton uses a slightly different output syntax, which is compatible >>> with Clojure's xml zipper functions, making it more suitable for document >>> searches and traversal (IMO). >>> >>> - James >>> >>> > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.