Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ruby conf tw 2012 build your own web scrapper

8a1a02106afc7bbe22485ac5538aa411?s=47 Dale Ma
December 08, 2012

ruby conf tw 2012 build your own web scrapper

build your own web scrapper


Dale Ma

December 08, 2012


  1. Build Your Own Web Scraper - Dale Ma @eguitarz 12年12月8日星期六

  2. @eguitarz It’s fun to do something small and easy. 12年12月8日星期六

  3. @eguitarz I always want to build a robot to serve

    me. 12年12月8日星期六
  4. @eguitarz Since making a robot is too difficult, so I

    choose to make a web bot. 12年12月8日星期六
  5. @eguitarz Today I’m talking about how do I build my

    own web scraper in ruby. 12年12月8日星期六
  6. @eguitarz Web scrapers have many uses. For example... 12年12月8日星期六

  7. @eguitarz Up time survey, image collecting, automate web snapshots and

    more... 12年12月8日星期六
  8. @eguitarz Usually, there are many scrapers (threads) fired at the

    same time. 12年12月8日星期六
  9. @eguitarz So, first things first, I have to control the

    threads. 12年12月8日星期六
  10. @eguitarz I decide to write #threadpool to do this such

    thing. 12年12月8日星期六
  11. @eguitarz You can find that at https:// github.com/eguitarz/threadpool 12年12月8日星期六

  12. @eguitarz Threadpool decides the life of each thread. 12年12月8日星期六

  13. @eguitarz Now, let’s go for the main dish. 12年12月8日星期六

  14. @eguitarz Web scrappers should be able to `grab page` and

    `parse html tags`. 12年12月8日星期六
  15. @eguitarz #Nokogiri is good at those things. 12年12月8日星期六

  16. @eguitarz I use “Hash” to save parsed links. 12年12月8日星期六

  17. @eguitarz There’s a problem, links stored in hash by threads.

    But hash in ruby is not thread-safe... 12年12月8日星期六
  18. @eguitarz #hamster helps me with this. 12年12月8日星期六

  19. @eguitarz I use `Depth-Limited Search` algorithm for my scrapper. 3

    2 1 1 12年12月8日星期六
  20. @eguitarz What if the page needs javascript to render? 12年12月8日星期六

  21. @eguitarz There’s a easy way... use browser to render the

    html with javascript. 12年12月8日星期六
  22. @eguitarz How? 12年12月8日星期六

  23. @eguitarz #Waltir or #Selenium 12年12月8日星期六

  24. Gonna show my little toy... 12年12月8日星期六

  25. @eguitarz My scraper is on github at https:// github.com/eguitarz/macaron 12年12月8日星期六

  26. @eguitarz The demo is simple, `you` can enhance or create

    new one. 12年12月8日星期六
  27. @eguitarz Wikipedia scraper, Facebook scraper... could be interesting! 12年12月8日星期六

  28. THANKS! 12年12月8日星期六