Monday 20 February 2012

Grab jobs from Freelancer

Grab jobs from Freelancer
This task use java and jsoup to grab jobs from Freelancer
Grab jobs from Freelancer
  1. Create Freelancer class as following
  2. Call Freelancer.grab() method as following
Call Freelancer.grab() method
List<Freelancer.Job> jobs = Freelancer.grab();
for (int i = 0; i < jobs.size(); i++) {
    logger.info(jobs.get(i).toString());
}
    
Freelancer class
public class Freelancer {

    private static Logger logger = Logger.getLogger(Freelancer.class);
     
    public static List<Job> grab() {
        List<Job> jobs = new ArrayList<Job>();
        try {
            String link = "http://api.freelancer.com/Project/Search.xml?order=submitdate&order_dir=desc";
            Document doc = Jsoup.parse(new URL(link), 60000);
            Elements elements =  doc.select("item");
            Element element = null;
            for (int i = 0; i < elements.size(); i++) {
                element = elements.get(i);
                Job job = new Job();
                if (element.select("id").first() == null) continue;
                job.id = element.select("id").first().text();
                job.url = element.select("url").first().text();
                job.title = element.select("name").first().text();
                job.shortDesc = element.select("short_descr").first().text();
                job.data.put("Start date:", element.select("start_date").first().text());
                job.data.put("End date:", element.select("end_date").first().text());
                job.data.put("Buyer url:", element.select("buyer url").first().text());
                job.data.put("Buyer id:", element.select("buyer id").first().text());
                job.data.put("Buyer username:", element.select("buyer username").first().text());
                job.data.put("Featured:", element.select("options featured").first().text());
                job.data.put("Non-public:", element.select("options nonpublic").first().text());
                job.data.put("Trial:", element.select("options trial").first().text());
                job.data.put("For gold members:", element.select("options for_gold_members").first().text());
                job.data.put("Hidden bids:", element.select("options hidden_bids").first().text());
                job.data.put("Min budget:", element.select("budget min").first().text());
                job.data.put("Max budget:", element.select("budget max").first().text());
                Elements eles = element.select("jobs item");
                String vals = "";
                for (int j = 0; j < eles.size(); j++) {
                    if (vals.length() > 0) vals += ", ";
                    vals += eles.get(j).text();
                }
                job.data.put("Jobs:", vals);
                jobs.add(job);
            }
        } catch (Exception e) {
            logger.error("", e);
        }
        return jobs;
    }
        
    public static class Job {
        public String id = "";
        public String title = "";
        public String shortDesc = "";
        public String url = "";
        public Map<String, String> data = new HashMap<String, String>();
         
        public String toString() {
            String tag = "\r\n";
            tag += "Id: " + id + "\r\n";
            tag += "Title: " + title + "\r\n";
            tag += "Url: " + url + "\r\n";
            tag += "Short Desc: " + shortDesc + "\r\n";
            for (String key : data.keySet()) {
                tag += key + " " + data.get(key) + "\r\n";
            }
            return tag;
        }
    }
     
}
    

  Protected by Copyscape Online Copyright Protection

No comments:

Post a Comment