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.

Where Next?

Popular in Jobs Top

LucaMausberg
Introductory paragraph We at Marko strive to make second-hand the first choice. We will make buying and selling second hand online easy,...
New
harmon25
Hi All, We at Control Gap Inc. are looking for passionate candidates to join our new development team. About us My name: Doug Wright ...
New
troy76
System76 engineers and manufactures open source hardware, software, and firmware at our factory in Denver, Colorado. At System76 you’ll p...
New
emily-smith-felcana
I’m Emily from Felcana, the first vet-led, vet-focused pet tech start up (say it fast!) Introductory paragraph Felcana are the first ve...
New
mudspot
Introduction We’re on the lookout for a Phoenix Elixir Engineer who’s passionate about building robust, scalable web applications. You’l...
New
Jo_hiring
About us A.P. Moller - Maersk - as an international business on a high-tech journey, we don’t just transport millions of tons of cargo....
New
christo-ph
Introductory paragraph For a fresh project, we are going to create a pilot application. UI/UX/Frontend will be provided, needs to be im...
New
Rachc
Hey there! Remote is solving global remote organisations’ biggest challenge: employing anyone anywhere compliantly. We make it possible ...
New
jeffdeville
Project This project has 2 main things going for it: It’s a phoenix app that requires common, but non-trivial features. eg: White lab...
New
seatscouts
Introductory paragraph At Broker Genius, we are an industry-leading SaaS provider helping brokers in the event ticket industry automate ...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 127089 1222
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement