jeffdeville

jeffdeville

New to Elixir? Want to make a few bucks learning with some simple scraping projects?

UPDATE1 - See end of post

The Project

I need to scrape the content from several sites all into a common format, so that I can create a unified database of licensed physicians. Links to the various state licensing boards can be found here:
http://www.ndverify.com/license.htm

There are a few states with APIs, but many will require screen scraping.

The Pitch

Screen scraping projects are my favorite ways to learn a new language, because the work is very similar to common real-world tasks. Lots of HTTP work, parsing, data processing, error handling, persistence, and async work.

IMO, this is more useful than doing another Game of Life clone, or brain teaser koans which don’t require learning about the package ecosystem, external API calls, etc.

What’s more, you can learn from what I’ve figured out so far (I’ve been using Elixir for about 6 months now), by contributing to this framework.
https://github.com/jeffdeville/nhverify

This is great, because while this project is using some advanced concepts like Ecto 2.1, and GenStage, you don’t have to understand it all in order to work on it. I’ve abstracted that complexity out. So you can pick it up at your own pace. What you will get into quickly is functional concepts, HTML/JSON parsing, and ExUnit.

Caveat

I have been writing software for quite awhile in Ruby, Python, Go, Node, c#, and Elixir. This is me: Feel free to send me an invite: https://linkedin.com/in/jeffdeville But be aware: my name is NOT José Valim. Many of these concepts are new to me as well, so there’s every likelihood that you’ll find areas for improvement. That’d be awesome!

Future

This can be a small project, where you just implement 1 scraper, or a larger one, where you tackle several. If things work out, you can help me work on the search engine this data is pipelining in to, payment processing and member services in a Phoenix app, or whitelabeling the site for clients.

Money

Here’s the rub. This is a side project that really won’t ever pay me a ton of money, which means I don’t have a ton to pay you. This is primarily a great way to learn useful skills while contributing to a great project tuned for new learners, and making some beer money. I’m thinking ~300/site on average, though we’d have to look at each candidate to verify.

Update 1

I didn’t expect such a response! There’s been several entirely reasonable questions about details of the scraping work. So here’s some more detail:

Each of these sites follows basically the same formula. A search results page that we can hard code the links to as starting points. And then the search details page for each physician. Straight forward. The challenge is that the HTML structure is pretty wretched in many cases, so figuring out how to extract the data on the page can be a bit of a pain. For example: https://hrlb.oregon.gov/OBNM/licenseelookup/detail.asp?num=1002587&searchby=INDEXNAME&searchfor=A&stateselect=NONE This html isn’t even valid, and the encoding isn’t handled automaticaly by Floki. There aren’t many useful css classes to help either.

Your destination data model is a single struct with some minimal validation: https://github.com/jeffdeville/nhverify/blob/master/lib/licensee.ex

What I need to do, is add some decent docs, and configure travis or circle to auto-run the specs. I’ll get to that as soon as possible!

Most Liked

jeffdeville

jeffdeville

Sorry all, this post was from a year ago. Eiji did most of the scraping work. I’ll keep you all in mind if I can find some other work to do though!

jeffdeville

jeffdeville

auxyria

auxyria

I am interested as well. I have been looking at trying out Elixir and learning a new language, give myself challenges. Please let us know what you have decided.

BrightEyesDavid

BrightEyesDavid

Interesting. :slight_smile: I wrote/tried to write a simple image scraper for a free image site when starting Haskell (failed) and Go (succeeded, in a non-polished way). I’ll keep your project in mind as I start to learn Elixir in case I end up thinking I may be able to help.

Eiji

Eiji

I’m really interested in.

I started think about Elixir in May, but most attention I gave from August this year, so I’m almost new. I learned lots of languages, because I searched Elixir like language to much my future plans, so if I understand what to do then I just do it.

I need only some hours/days (for example: make simple tests) to learn about API from dependencies and your code.

What exactly you mean by: “beer money”? What currency and what beer? haha
Currency of my country is about 4-5 times lower than the EUR and USD.
Currently I need less than 50USD per month for my roommates (and I have redeemed already for the full year). Of course I don’t require 50USD per month, but with this I can focus primary on it.

Currently I’m working on porting (and adding some features to port) example program (from Ruby) called Vexil for new Elixir book. From middle of December (currently developer that checks my work is busy) I will continue making Elixir examples for atom-beautify (original => expected) pairs, so developers can add Elixir language support for this atom package.

“Beer money” will be really helpful, because I want to learn Elixir and add some Elixir related work to my CV before I start looking for real jobs (Elixir or Ruby), but I do not participate in any projects that give me some income, and money (even little) always enjoy us.
:smile:

P.S.
Your blog linked in your github your page is not responding.
Your server (probably nginx) don’t catch www. prefix in url and location /blog returns 404 error page from your site.
:icon_sad:

P.S.2
I fast look at your code and I have some suggestions for it. I can fork it and make some PR`s in next days.

Where Next?

Popular in Jobs Top

alanvardy
Introductory paragraph Hello, my name is Alan Vardy, and I am the Tech Lead on Blitz’s Backend team. We are seeking a senior and mid-lev...
New
rockwood
Shape the future of land investing, wherever you are Join our fully-remote team building the most incredible product for land investors. ...
New
elbasti
Introductory paragraph Trying something new I’ve never seen before: code review as a service! We’re a very small team (2 engineers), bot...
New
seatscouts
Introductory paragraph At Broker Genius, we are an industry-leading SaaS provider helping brokers in the event ticket industry automate ...
New
joe
Introductory paragraph We are a young agriculture tech (AgTech) start-up with the vision of sustainable farming through intelligence sol...
New
QuinnWilton
Hey Elixir Forum! I’m an engineer at Tinfoil Security. We’re a small team of < 15 people who write automated security analysis tools....
New
Judith
Firework is the world’s leading immersive “shoppertainment” platform with shoppable video, live streaming commerce, and monetization capa...
New
bengerson
Introductory paragraph Hello Elixir enthusiasts! We’re excited to announce a great opportunity at Candidately. We’re currently seeking a...
New
lafka
Introduction We’re looking for curious, self-driven team members interested in solving interesting problems with a focus long term stabi...
New
vbrazo
Hiive - Remote/Hybrid Canada, Vancouver | Mid/Senior Elixir, React Engineer | Full-Time About us My name: Vitor Oliveira My position: ...
New

Other popular topics Top

chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30048 115
New
dotdotdotPaul
Okay, I'm having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I'm sure I'...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 49522 488
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 35421 110
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
AstonJ
by Lance Halvorsen Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
460 27162 124
New

We're in Beta

About us Mission Statement