Yahoo Finance Scraper

jmh530 john.michael.hall at gmail.com
Fri Jun 12 19:10:06 UTC 2020


On Friday, 12 June 2020 at 18:22:28 UTC, Selim wrote:
> I wrote a small Yahoo finance scraper and wanted to share with 
> the community. I have been using D for a while and I think 
> contributing something to the community is good. There is an 
> example main script and a unit test. Those should get you 
> going. It currently saves the scraped data as a json file under 
> the executable's folder. I might add a public method to access 
> individual data columns inside json in the following days too.
>
> All mistakes are my own and I appreciate any feedback.
>
> https://github.com/SelimOzel/YahooMinerD
>
> Best,
> Selim

Thanks! There was a period there where you couldn't use the yahoo 
API, glad to see that people can use it again.

I haven't run it myself yet, but I have a few comments for 
potential changes and enhancements.

Why do you use a class for YahooMinerD (also the name 
YahooFinanceD might get more people to use)? It doesn't look like 
you are using any inheritance. I don't see any reason not to 
change to a struct and avoid new.

It looks like you have a lot of writeln statements. While these 
could be helpful, they will also prevent those functions from 
ever being @nogc. You could use an approach like below and give 
the user the opportunity to avoid the writelns and allow for 
attribute inference elsewhere.

@nogc void fooImpl(bool val)()
     if (val)
{

}

void fooImpl(bool val)()
     if (!val)
{
     import std.stdio: writeln;
     writeln("here");
}

void foo(bool val = false)()
{
     fooImpl!val;
}

@nogc void main() {
     foo!true;
}

It looks like the primary way to get the data is from the 
WriteToJson, correct? What if you want to use the data without 
writing the JSON to file? For instance, I want to get the data 
and put it in my own database, or I just want to get the data, do 
some calculations, and then not save it. There should be a way to 
get the data out of there without writing to file. std.json can 
be used for parsing the JSON and there are other libraries out 
there.

The WriteToJSON method should also allow writing events or prices 
without needing to write both.

You might consider adding the ability to control the frequency 
(instead of just daily).


More information about the Digitalmars-d-announce mailing list