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.

Reply via email to