On Sunday, February 3, 2019 at 9:54:25 PM UTC-5, Walter Lee Davis wrote:
>
>
> > On Feb 3, 2019, at 7:14 PM, fugee ohu <fuge...@gmail.com <javascript:>> 
> wrote: 
> > 
> > 
> > 
> > On Wednesday, January 30, 2019 at 5:16:59 PM UTC-5, Colin Law wrote: 
> > On Wed, 30 Jan 2019 at 22:12, Colin Law <cla...@gmail.com> wrote: 
> > > 
> > > On Wed, 30 Jan 2019 at 22:09, fugee ohu <fuge...@gmail.com> wrote: 
> > > > 
> > > > 
> > > > 
> > > > On Wednesday, January 30, 2019 at 5:02:17 PM UTC-5, Colin Law wrote: 
> > > >> 
> > > >> On Wed, 30 Jan 2019 at 21:56, fugee ohu <fuge...@gmail.com> wrote: 
> > > >> > ... 
> > > >> > Everything in the unparsed resonse body that I want is between [ 
> and ] I have to gsub it out 
> > > >> 
> > > >> 
> > > >> No you don't.  After you get parsed_obj["results] (which is an 
> array, 
> > > >> that's what the [] mean) then you can get the first product by 
> > > >> parsed_obj["results"][0]["productId"] 
> > > >> It is just an array.  You have met ruby arrays haven't you? 
> > > >> 
> > > >> I am rapidly losing the will to live. 
> > > >> 
> > > >> Colin 
> > > > 
> > > > 
> > > > The response body isn't JSON.parse parsable as is it has to be 
> gsub'd and chomped first before I can run JSON.parse My original gsub 
> wasn't right it wasn't removing the end that follows ] 
> > > > JSON::ParserError: 784: unexpected token at 
> 'myscript.js({"success":true,"code 
> > > 
> > > You previously posted that you had got parsed_obj where 
> > > parsed_obj["results]  was an array.  Go back to that. 
> > 
> > To quote your previous message 
> > 
> > >puts parsed_obj["results"]  shows the entire results but `puts 
> parsed_obj["results"]["productId"] gets me error no implicit 
> > > conversion of String into Integer 
> > 
> > The error is because it is an array, which is perfectly obvious if you 
> > look at the unparsed string. So if you use 
> > parsed_obj["results"][0] 
> > you will get the first element 
> > 
> > Colin 
> > 
> > There are scripts in the browser page source that pass a lot of useful 
> values like this 
> > <script type="text/javascript"> 
> >                 if(!window.runParams) { 
> >                 window.runParams = {}; 
> >                 } 
> >                 window.runParams.minPrice="44.98"; 
> >                 window.runParams.maxPrice="44.98"; 
> >                ... 
> > And more within definitions in the same script like this 
> > var 
> skuProducts=[{"skuAttr":"14:1052","skuPropIds":"1052","skuVal":{"actSkuCalPrice":"20.24","actSkuMultiCurrencyCalPrice":"20.24","actSkuMultiCurrencyDisplayPrice":"20.24","availQuantity":29,"inventory":30,"isActivity":true,"skuCalPrice":"44.98","skuMultiCurrencyCalPrice":"44.98","skuMultiCurrencyDisplayPrice":"44.98"}},{"skuAttr":"14:173","skuPropIds":"173","skuVal":{"actSkuCalPrice":"20.24","actSkuMultiCurrencyCalPrice":"20.24","actSkuMultiCurrencyDisplayPrice":"20.24","availQuantity":26,"inventory":30,"isActivity":true,"skuCalPrice":"44.98","skuMultiCurrencyCalPrice":"44.98","skuMultiCurrencyDisplayPrice":"44.98"}}];
>  
>
> >                 var GaData = { 
> >         pageType: "product", 
> >         productIds: "en32837801078", 
> >         totalValue: "US $20.24" 
> >     }; 
> > 
> > Since it's in <script> containers in page source can I parse it? 
>
> Since it's in a <script> tag, you can use Nokogiri or another HTML parser 
> to extract only that bit of the page. To be sure, you will have to do some 
> work on the script before you can access the parts you're interested in as 
> JSON. But JSON is the same whether it is being parsed by JavaScript or 
> Ruby. You're going to have to work out the best way to identify the parts 
> you want. There's no such thing as a JavaScript parser in Ruby, but if you 
> can figure out where to start, and how to get the offsets to trim your 
> starting code, the parts that look interesting above will be interesting to 
> Ruby, too. 
>
> I'm assuming you don't have control over this page, and that you are doing 
> some sort of scraping exercise here. So you'll need to have lots of tests 
> around whatever code you write, and keep checking often, because the owner 
> of this code may change its fundamental structure at a moment's notice. 
>
> Walter 
>
>
Should  the skuProducts array be in network->js->response somewhere ?

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/5ec26c1a-aed5-4408-af06-888c1ecc7ab1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to