Search code examples
rubyscreen-scrapingnokogirimechanize

Would like help extracting from model data nested inside javascript text filtered with Mechanize


Using the following:

LowEast = agent.get('https://rs.alarmnet.com/TotalConnectComfort/Device/Control/12345')
puts LowEast.parser.xpath("//script[@type='text/javascript']")

Returns what follows, which I have somewhat truncated for brevity. Specifically, I would like to extract the two pieces of information prior to each semicolon and then I'll figure out how to dump them into a log file. I haven't seen how to do this, but it seems like it shouldn't be to hard. If I've missed a similar question, I apologize.

<script type="text/javascript" src="/TotalConnectComfort/Scripts/Control/Control.Urls.js?v=1.5.46"></script>
<script type="text/javascript" src="/TotalConnectComfort/Scripts/Control/Control.Init.js?v=1.5.46"></script>
<script type="text/javascript">
    $(document).ready(function() 
    {
        ///////////////////// pass model data to client-side logic /////////////////////
        Control.Model.set(Control.Model.Property.batteryStatus, 0);
        Control.Model.set(Control.Model.Property.commercial, false);
        Control.Model.set(Control.Model.Property.communicationLost, false);
        Control.Model.set(Control.Model.Property.coolLowerSetpLimit, 50.0000);
        Control.Model.set(Control.Model.Property.coolNextPeriod, 88);
        Control.Model.set(Control.Model.Property.coolSetpoint, 78.0000);
        Control.Model.set(Control.Model.Property.coolUpperSetptLimit, 99.0000);
        Control.Model.set(Control.Model.Property.deadband, 0.0000);

Solution

  • Just use scan:

    text.scan /Control.Model.set\((.*), (.*)\);/