101 karma · joined June 5, 2016
For what it's worth, I was able to build a Mac OS version locally.
for x in range(1, 101):
out = ""
if x % 3 == 0:
out += "Fizz"
if x % 5 == 0:
out += "Buzz"
print(out or x)Looking at just Days 1 and 2, the author has given examples that are certainly concise, but (arguably) at the expense of readability. Similarly, the Day 2 part 2 answer is concise at the expense of performance, as there is a lot of duplicated comparisons and comparisons that could be skipped.
If I could make one suggestion: I found it to be quite annoying to have to click through to a two-line gist for every single one command. Having those commands be in the article itself would be considerably easier to read.
I'm scraping from variety of different websites (1000+) that my org doesn't own. Reconfiguring to hit APIs would be complex, and a maintenance problem, both of which I easily avoid by using selenium to drive an actual browser, at the expense of time.
>Have you ever tried to contact the administrators to see if there's an API you could access?
Just not feasible given the scope and breadth of the scraping.
>Are you scraping data that would be against ToS if you tried to get it in a way that would benefit both you and the target web site?
I inspect and respect the robots.txt
I use explicit waits exclusively (no direct calls like `driver.find_foo_by_bar`), and find it vastly improves selenium reliability. (Shameless plug) I have a python package, Explicit[1], that makes it easier to use explicit waits.
As others have said, I find the pricing model to be off. Additionally, the app UI looks ands feels dated.
* Note that the BFL has some errors in it's dates, which account for the downward trend in 1993 and 2000
Whats truly great is that you are forced to solve the problem on your own, and then you can see how others did it, both in your chosen language(assuming it's a somewhat common language), but also a myriad of other languages.