Hi Alistair, The example is not working for me. When I run it, a chrome session is open but nothing happens there, except that my image gets frozen until I close chrome and then I get this message: "ConnectionTimedOut: Cannot connect to 127.0.0.1:9222". What is the expected behavior? PharoChrome expects the user to have a Google account or be logged in by default to work (that would be a shame for those of us that don't a Google account and still value our privacy).
Thanks, Offray On 14/11/17 11:26, Alistair Grant wrote: > I've committed some fixes to the development branch: > > 1. MacOS hopefully works now (I don't have access to the platform, so > can't test it). > 2. The development version of Beacon is loaded (which is required for > the InMemoryLogger). > 3. The README is a tiny bit better. > 4. Added #extractTables. > > As an example of how historical stock market data can be extracted, > the following retrieves data for the Australian S&P200 index from > yahoo: > > > | rootNode tables historicalData dataFrame | > > rootNode := GoogleChrome get: > 'https://finance.yahoo.com/quote/%5EAXJO/history?p=%5EAXJO'. > tables := rootNode extractTables. > historicalData := (tables sorted: #size ascending) last. > dataFrame := DataFrame fromRows: (historicalData select: [ :each | > each size = 7 ]). > dataFrame asStringTable. > > " > | 1 2 3 4 5 6 > 7 > -----+----------------------------------------------------------------------------- > 1 | Date Open High Low Close* Adj > Close** Volume > 2 | Nov 14, 2017 6,021.80 6,021.80 5,957.10 5,966.00 5,966.00 > - > 3 | Nov 13, 2017 6,029.40 6,029.40 6,010.70 6,021.80 6,021.80 > - > 4 | Nov 10, 2017 6,049.40 6,049.40 6,020.70 6,029.40 6,029.40 > - > etc. > " > > > To load the development version on MacOS or Linux in a 32 bit image: > > "Assuming you don't have OSProcess loaded:" > Metacello new > configuration: 'OSSubprocess'; > repository: 'github://marianopeck/OSSubprocess:master/repository'; > version: #stable; > load. > > Metacello new > baseline: 'Chrome'; > repository: 'github://akgrant43/Pharo-Chrome:development/repository'; > load. > > > Cheers, > Alistair > > > On 12 November 2017 at 20:09, Alistair Grant <akgrant0...@gmail.com> wrote: >> Hi Sean, >> >> Thanks for your feedback! (responses below) >> >> >> On 12 November 2017 at 18:11, Sean P. DeNigris <s...@clipperadams.com> wrote: >>> Alistair Grant wrote >>>> https://github.com/akgrant43/Pharo-Chrome >>> Wow, that was a wild ride! >> Sorry about that. >> >> >>> Lessons learned along the way: >>> 1. On a Mac, to use the snazzy `chrome` terminal command referenced all over >>> the place in the docs, you must first `alias chrome="/Applications/Google\ >>> Chrome.app/Contents/MacOS/Google\ Chrome"` >> I'm an Ubuntu Linux user, however if you look at OSXChromePlatform >> class>>defaultExecutableLocation you can see that is where it should >> be looking for the exe, so the alias shouldn't really be necessary. >> Torsten wrote this, so maybe has more insight. >> >> >>> 2. Chrome must be started with certain flags: `chrome >>> --remote-debugging-port=9222 --disable-gpu` (not sure if the last flag is >>> needed, but `#get:` seemed to hang before using; reference >>> https://developers.google.com/web/updates/2017/04/headless-chrome) >> I've been using this without headless mode. I'll add a headless flag >> that also disables the gpu. >> >> >> >>> 3. Beacon has renamed InMemoryLogger to MemoryLogger >>> 4. I guess Beacon has renamed `#log` to `#emit` >> Sorry about that. I didn't realise that the Pharo-Chrome baseline is >> loading Beacon stable while my install script upgrades it to >> #development. #development is more recent, so I'll update the >> baseline. >> >> >> >>> 5. I had to comment out `chromeProcess sigterm.` because `chromeProcess` was >>> nil and also #sigterm seemed not to be defined anywhere in the image. I'm >>> not sure what the issue is there. >> chromeProcess is set in GoogleChrome>>openURL:. Can you give me a >> small example that demonstrates the problem? >> >> #sigterm is implemented by OSSUnixSubprocess, which is what I >> ultimately use to launch the Chrome process on Ubuntu. >> >> But... this will be broken on Mac at the moment because the current >> method of launching chrome doesn't keep track of the process, so >> doesn't support #sigterm. Do you know if OSSUnixSubprocess works on >> Mac? If it does, I can update the code (but not test it :-(). >> >> >>> Pull request issued for #3 & #4. >> Once I update the baseline this shouldn't be required. >> >> >>> Also, I'm not sure what platforms you >>> support, but you may want to tag the example methods with <gtExample> or >>> similar so that they are runnable from the browser and open an inspector if >>> there is an interesting return value. >> Good idea, I'll do this. >> >> I'm also making a few other changes: >> >> 1. Add an #extractTables method that searches through the page and >> returns an array of rows for each table it finds in the page >> (something that can easily be loaded in to DataFrame using #fromRows:, >> but I don't want to make Pharo-Chrome dependent on DataFrame at the >> moment). Most of the time I use Pharo-Chrome it is extracting data >> from tables. >> >> 2. I don't know of any reliable way to tell when a page has loaded >> since there can always be javascript that periodically updates the >> page. At the moment it waits until the page hasn't changed for a >> configurable amount of time. I'm planning to add a check for specific >> content to determine if the page is considered loaded. >> >> 3. Add some documentation to the readme :-) >> >> >> >>> ----- >>> Cheers, >>> Sean >> I'll let you know when I have a new version available (hopefully in >> the next few days). >> >> >> Thanks again, >> Alistair >