UTF-8 and html screen scraping in Ruby on Rails


Before I start, if you have any doubts or you are unaware about character sets (i.e. you are not familiar with words like utf-8, unicode etc), I would recommend you to read Joel's The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

The problem statement of this article is How to handle foreign or accented characters in html screen scraping. We encountered it while working on our website information project Quarkbase.com

Configuration & Tools we will be using are rails - 2.1.2, scrapi - 1.2.0, hpricot - 0.8.1, curb - 0.4.4.0. The example website that we will try to scrape is http://196m.cn

At Quarkbase, when we aggregate information from a website, scraping information (having non-english characters) doesn't always work. For example, when we get description for http://196m.cn from its HTML page, the extracted information is the first line after 'overview' in screenshot below :



Now, its not like only I don't understand it, no one can understand it :P, because they are not valid characters at all. So, we need to fix this issue and fetch readable utf-8 data while scraping.
The first step will be to fetch the html document using any of the ruby's URL library (net/http, open-uri or curb). We will be using curb here.

1
2

curl_object = Curl::Easy.perform("http://196m.cn")
Now, if I do curl_object.content, i see a lot of "?", and other garbage characters. if I try to parse it using scrapi or hpricot, i get some crap, which makes no sense and is unreadable to all.
Before scraping curl_object using Hpricot or Scrapi, I should tell you that Hpricot requires input in utf8-encoding and Scrapi has no such condition but it does not always work with other character encoding.

So, we should convert html data in curl_object to utf-8 encoding, for which we need current encoding of the document. One way to do this will be:

1
2
3
4
5
6
7

if meta = curl_object.content.match(/(<meta\s*([^>]*)http-equiv=['"]?content-type['"]?([^>]*))/i)
  if meta = meta[0].match(/charset=([\w-]*)/i)
    encoding = meta[1]
  end
end
=> 'gb2312'
Next, we use ruby's iconv library to convert text from one encoding to the other
1
2
3

require 'iconv'
Iconv.conv('utf-8', encoding, curl_object.content) 
The above conversion will fail for this site. Since, iconv is not able to convert all the characters from one encoding to the required one. One solution to this is to ask Iconv to convert as much as it can
1
2

Iconv.conv('utf-8//IGNORE', encoding, curl_object.content) 

Cool! Now we have content in utf-8 format. Lets scrape it!

Using Hpricot:

1
2
3

Hpricot(Iconv.conv('utf-8//IGNORE', encoding, curl_object.content)).search("meta")
=> #<Hpricot::Elements[{emptyelem <meta content="text/html; charset=gb2312" http-equiv="Content-Type">}, {emptyelem <meta name="description" content="包括茶叶及茶饮料,茶食品,搜茶,茶民周刊,茶文化,音乐红茶馆,下午茶,茶道,茶叶选购指南及茶具陶瓷,茶业种植,加工,营销等频道及专题栏目,是以茶道茶艺茶文化为主题的综合性茶道网站">}, {emptyelem <meta name="keywords" content="茶,茶叶,茶网,茶文化,茶艺培训,茶道,tea,茶文化,茶业,红茶,绿茶,铁观音,茶饮,茶艺,茶餐厅,茶具,紫砂,龙井,碧螺春,乌龙茶,大红袍,普洱茶">}]>

Using Scrapi:
1
2
3
4
5
6
7
8
9

Scraper.define do
  process "meta[name='description']", "r[]"=>:element
  result :r
end.scrape(Iconv.conv('utf-8//IGNORE', encoding, curl_object.content)).to_s
=> "<meta name=\"description\" content=\"&#229;&#338;&#8230;&#230;&#8249;&#172;&#232;&#338;&#182;
&#229;&#182;&#229;&#352;&#232;&#338;&#182;&#233;&#165;&#174;&#230;&#8211;
&#8482;,&#232;&#338;&#182;&#233;&#163;&#376;&#229;&#8220;,&#230;&#339;&#232;
&#338;&#182;,&#232;&#338;&#182;&#230;&#176;&#8216;&.......

This is not the expected output. Scrapi comes with 2 parsers: tidy and html_parser. Scrapi by default uses tidy, so lets try using html_parser
1
2
3
4
5
6

t=Scraper.define do
  process "meta[name='description']", "r[]"=>:element
  result :r
end.scrape(Iconv.conv('utf-8//IGNORE', encoding, curl_object.content), :parser=>:html_parser).to_s
=> "<meta name=\"description\" content=\"包括茶叶及茶饮料,茶食品,搜茶,茶民周刊,茶文化,音乐红茶馆,下午茶,茶道,茶叶选购指南及茶具陶瓷,茶业种植,加工,营销等频道及专题栏目,是以茶道茶艺茶文化为主题的综合性茶道网站\">"

Yep, and it that works now!. This is how the site information, now looks like:

Filed in ruby on rails
Posted on 22 September
143 comment Bookmark   AddThis Social Bookmark Button Updated on 25 June
Comments

Leave a response

  1. de groazaOctober 27, 2009 @ 02:57 PM

    I’m so happy I stumble upon this blog! A lot of helpful info I really needed to know these stuff, I had a hard time with those foreign characters. Thank you so much!

  2. Sell goldApril 17, 2010 @ 02:43 PM

    Another very solid tutorial. Thank you. Not something I can use right now but I bookmarked for the future.

    Matt Gold

  3. Buy glitterMay 17, 2010 @ 01:23 AM

    This looks brittle. What if the encoding is defined in the HTTP header? With normal open() instead of curl you get the encoding for free: http://jasonseifer.com/2008/03/18/hpricot-and-utf-8

  4. website designMay 24, 2010 @ 07:48 AM

    Hello, the type code really help me much. Thank you for the suggestion and code.

  5. Small BoxesMay 25, 2010 @ 08:49 AM

    It is very useful, thanks.

    Good Luck

  6. KeychainMay 25, 2010 @ 08:50 AM

    A lot of helpful info I really needed to know these stuff, me too

  7. ViolaMay 29, 2010 @ 11:30 AM

    Hello, the type code really help me much. Thank you for the suggestion and code.

  8. cook county jail inmate searchJune 01, 2010 @ 06:49 PM

    excellent information. Quite helpful. I gonna share this with my communities.

  9. nadeem jeeJune 02, 2010 @ 07:42 PM

    He was not a favourite at the court of Lorenzo the Magnificent as Filippino Lippi and Botticelli were. Lorenzo liked those who would flatter him and do as they were bid, while Leonardo took his own way in everything and never said Cat Supplies what he did not mean.

  10. surveysJune 03, 2010 @ 07:44 PM

    I have been trying to look for a solution to the utf8 problem and glad I searched and found you. Now I can save myself a lot of time by not having to figure out myself.

  11. cheap prada sneakersJune 08, 2010 @ 11:32 AM

    Good article. Thank you so much to share!

  12. Pinetop Cabin RentalsJune 08, 2010 @ 10:09 PM

    Thanks for sharing this great article.. Like it! Pinetop Cabin Rentals

  13. search plumbersJune 15, 2010 @ 09:18 AM

    Another great set, I appreciate all the work you put into this site, helping out others with your fun and creative works.

  14. talkpcJune 21, 2010 @ 03:20 AM

    Thank you so much to share!

  15. labradoriteJune 25, 2010 @ 09:45 PM

    This is very good information!

  16. liberal arts collegesJune 28, 2010 @ 12:19 PM

    Its always good to learn tips like you share for blog posting. As I just started posting comments for blog and facing problem of lots of rejections. I think your suggestion would be helpful for me. I will let you know if its work for me too. Thank you for sharing this beautiful articles.

  17. Electrician ServicesJune 30, 2010 @ 06:45 AM

    These facts are amazing . I was searching before last 5 weaks and ia din’t get the perfect answer. But after all i found from your site. thanks for posting such a interesting topic.

  18. Builder Services SydneyJuly 01, 2010 @ 10:01 AM

    I recently came across your article and have been reading along. I want to express my admiration of your writing skill and ability to make readers read from the beginning to the end. I would like to read newer posts and to share my thoughts with you. Cleaners | Painters | Plumbers

  19. Pandora CharmsJuly 02, 2010 @ 01:11 AM

    Yet another problem with these changes. I am not able to access instance methods of my derived class from Scraper::Base from these blocks. I think these blocks are not “bind” to the local instance properly. Following code is an example from base.rb of scrapi and this doesn’t work.

  20. Acronym ListJuly 07, 2010 @ 01:48 AM

    The Acronym List is a searchable database of over 8 million acronyms, abbreviations and meanings. Covers: business, international, chat, organizations, common acronyms, computers, science, technology, government, telecommunications, and military acronyms.

  21. Connell ConnorJuly 07, 2010 @ 07:04 AM

    Try the Burton Blunt or the Capita Scaremaster or a Rome cheap trick. those are all cheap and good for park. e-business

  22. Buck BudJuly 08, 2010 @ 06:33 AM

    Most will cut them to size for you if you ask. They may charge a small fee. If they don’t know what they are doing usually you can use 1×4 oak boards and they will work fine. e-business

  23. voyanceJuly 12, 2010 @ 12:45 PM

    good tuto thanks !

  24. Search Marketing GroupJuly 14, 2010 @ 05:46 AM

    Good website. I like the all pages and all comments. Thanks for all!!! Regards!

  25. HydrophytenJuly 19, 2010 @ 08:55 PM

    I was searching before last 5 weaks and ia din’t get the perfect answer. But after all i found from your site. thanks for posting such a interesting topic.

  26. HostingJuly 26, 2010 @ 08:54 PM

    It’s a very exciting article. I like it so! i was very focused when i’m reading this. Thanks

  27. loan softwareJuly 27, 2010 @ 08:08 PM

    I am new to scrapping but I think its quite an awesome technique.No doubt there are lot features available in different programming languages which we can use to scrap a web site very easily.

  28. Speed Dating New YorkJuly 28, 2010 @ 06:08 AM

    I honestly think that just using Rails has made me a better developer. I can’t say much about Coldfusion because I’ve never used it, but it’s good that you are considering the merits of each, best to use the tools that are right for the job. Speed Dating New York

  29. Juicy CoutureAugust 03, 2010 @ 07:35 AM

    Shop the latest styles juicy couture handbags, juicy couture tracksuit. Juicy Couture

  30. Internet Marketing CompaniesAugust 04, 2010 @ 07:47 AM

    Really great information and inspiration, both of which I like. Nice article with very strong content. I love reading it over again.

  31. Schweiz GewinnspieleAugust 07, 2010 @ 10:29 PM

    cool information – difficult but interessting!

  32. dressAugust 10, 2010 @ 03:49 AM

    autoradio navigation, car dvd gps navigation, sat navigation stereo, OEM Factory headunit for all car makes Higher quality car electronics from Qualir Car DVD Player

  33. juicy coutureAugust 11, 2010 @ 06:32 AM

    I like this article very much. Thanks for your share!

  34. monclerAugust 11, 2010 @ 06:40 AM

    FashionStyleOnsale offer high quality Moncler Jackets at low price. Moncler Jackets on sale, shop more discount Moncler Vest, Moncler Coats at FashionStyleOnsale Moncler

  35. monclerAugust 11, 2010 @ 06:50 AM

    FashionStyleOnsale offer high quality Moncler Jackets at low price. Moncler Jackets on sale, shop more discount Moncler Vest, Moncler Coats at FashionStyleOnsale Moncler

  36. Site de forexAugust 12, 2010 @ 03:15 PM

    Merci pour cet article car l’integration des characters dans les codes html c’est pas evident.

  37. liberar iphoneSeptember 05, 2010 @ 09:08 AM

    cool information – difficult but interessting!

  38. NikeSeptember 13, 2010 @ 03:17 AM

    Funny, I bought google phone and I love google map. Problem is google map keep giving me wrong direction. Email is nice though, I wish i can check hotmail and yahoo too.

  39. TiffanySeptember 13, 2010 @ 03:18 AM

    I had a possibility to buy a smartphone, but I didn`t, I`ve got accustomed to my ordinary phone. But I liked your article.

  40. UGG September 13, 2010 @ 03:18 AM

    Thanks for the updates. Not sure I would’ve been able to do this without them. Cheers once again.

  41. MBT September 13, 2010 @ 03:19 AM

    This is a wonderful blog

  42. Puma September 13, 2010 @ 03:22 AM

    Great stuff here. Thanks

  43. commission de surendettementSeptember 13, 2010 @ 09:29 AM

    It is a pleasure to read your articles. I have got a lot of useful information from your site. I was totally unfamiliar with many of subjects, but now I feel pretty confident in it! Thanks for sharing this site.

  44. gucciSeptember 15, 2010 @ 08:06 AM

    I would like to thank you for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well.

  45. ExchangeSeptember 18, 2010 @ 07:19 AM

    I’m glad i found ur blog.Not everyone can provide information with proper flow. Good post. I am going to save the URL and will definitely visit again. Keep it up.

  46. lyrics want youSeptember 27, 2010 @ 04:49 PM

    that is such a very good information in your blog i am learning many tools from here i am going to bookmark this page. regards lyrics team lyrics lovers.

  47. devis assurance voitureSeptember 29, 2010 @ 12:36 AM

    It’s an interesting approach. I commonly see unexceptional views on the subject but yours it’s written in a pretty unusual fashion. Surely, I will revisit your website for additional info.

  48. soundkartenSeptember 30, 2010 @ 06:17 PM

    i´m so very happy, that i found this interesting post.

    thank you!3

  49. MicrogreffeOctober 04, 2010 @ 01:35 PM

    Nice work, even that not very simple

  50. güzel sözlerOctober 04, 2010 @ 10:01 PM

    Thanks admin. Good site

  51. san diego carpet cleanersOctober 06, 2010 @ 05:32 AM

    Excellently written article, if only all bloggers offered the same content as you, the internet would be a much better place. Please keep it up!

  52. nikeOctober 09, 2010 @ 03:07 AM

    mason0507 tk

  53. placement court termeOctober 10, 2010 @ 11:57 PM

    Resources like the one you mentioned here will be very useful to me! I will post a link to this page on my blog. I am sure my visitors will find that very useful.

  54. buy office 2007October 11, 2010 @ 02:58 AM

    this is a great post and thank you for sharing this nice experience,and hope you can give another posts as soon as possible.

  55. Visitenkarten HannoverOctober 11, 2010 @ 09:44 AM

    I don’t know how to say with you. So much useful information i need!Thanks alot!

  56. liberar movilOctober 12, 2010 @ 01:51 PM

    I like it ! Thank you for this post, It was a great read which was extremely helpful.

  57. GaragentorOctober 12, 2010 @ 01:59 PM

    Thanks for a great tutorial. I wouldn`t do it on my own.

  58. free android themesOctober 15, 2010 @ 07:45 AM

    Remember you will not always win. Some days, the most resourceful individual will taste defeat. But there is, in this case, always tomorrow – after you have done your best to achieve success today.

  59. car insurance for teenagersOctober 19, 2010 @ 08:24 AM

    This is by far the simplest tutorial on this subject matter that I have come across. Great share.

  60. Semi Precious beadsOctober 19, 2010 @ 07:23 PM

    When you say to ask Iconv to convert as much as it can does this mean that data will be lost?

  61. online cpr certificationOctober 22, 2010 @ 07:15 AM

    This is the exact way that people expecting we can see most of the comments are true and towards the positive opinion..This is the exact way that people expecting we can see most of the comments are true and towards the positive opinion..

  62. currencyOctober 23, 2010 @ 02:01 AM

    Thanks for the UTF-8 and html screen scraping in Ruby on Rails which is really useful for me !

  63. Costume storeOctober 23, 2010 @ 04:42 AM

    Ruby on Rails is new to me. thanks for the info.

  64. Buy Fireworks October 23, 2010 @ 04:44 AM

    I never would have thought to do it this way. You saved me a ton of time. Thnaks

  65. coachOctober 29, 2010 @ 12:15 PM

    mason0507gawwr

  66. alomdaNovember 03, 2010 @ 08:04 AM

    Thank you for this wonderful illustration الجياش

  67. Thank you for this wonderful illustration

  68. Dental JobsNovember 05, 2010 @ 10:45 AM

    Great blog and screen shots make it so much easier

  69. alomdaNovember 07, 2010 @ 08:43 AM

    thnx 4 sharing برامج الجياش

  70. ugg bootsDecember 14, 2010 @ 09:58 AM

    Although made famous by its boots, UGG Australia has extended their product line to include stylish yet elegant clothing for both adults and kids. UGG Australia has designed a vast collection of gloves, scarves, hats, and UGG coats that will wrap you in warmth against the cold winter months. When the weather heats up and warm breezes blow, you can now enjoy cute dresses, wraps and lightweight hats.Now you can accessorize your favorite outfit with not only UGG footwear but a fabulous bag too. You can travel with a tote, shop with a cross-body messenger or paint the town red with a chic clutch or wristlet. All UGG handbags are crafted with the same attention to detail that has made them the premier brand they are today.What started off as a way to keep surfers’ feet warm has grown to include: UGG boots, slippers, kids, clothing, bags and accessories.

  71. ugg bootsDecember 14, 2010 @ 09:59 AM

    It fits perfectly. That translates to it running a half size smaller.I have only worn these boots for one day, but for 12 hours (it was a long day), and they were very comfortable.I personally prefer to pull the furry flap UP instead of folded like in the photo. It reveals more of the grey which I like. With jeans just barely tucked in, it looks really chic despite the fact that it’s a weather boot.I also want to add that I am not a fan of the slouchy UGG boots. I avoided this brand because of that image, but these Adirondack boots are something else. They are well worth it.

  72. Hotel BucurestiDecember 15, 2010 @ 11:14 AM

    Thank for the post. At the moment I do not need it but who knows what lies in the future.

  73. juicy couture charmsDecember 16, 2010 @ 06:30 AM

    Your blog is so nice.I am impressed with your vivid expression.I will bookmarked you…keep up the good work!!!!

  74. Rick ReiseDecember 23, 2010 @ 06:13 AM

    Another very solid tutorial. Thank you. Not something I can use right now but I bookmarked for the future.

  75. satelliteDecember 24, 2010 @ 10:34 AM

    I will definitely follow it, thanks and keep up the good work.

  76. дизайн интерьераDecember 24, 2010 @ 02:53 PM

    I’m looking forward to reading more

  77. ugg bootsDecember 27, 2010 @ 06:44 AM

    UGG Australia is a brand that is all about luxury and comfort for everyday life.

  78. ugg bootsDecember 27, 2010 @ 06:45 AM

    Although made famous by its boots

  79. erbb-2December 28, 2010 @ 09:20 AM

    Thanks for keeping us informed with all these news!

  80. cover letterDecember 29, 2010 @ 09:33 AM

    yes you can see this great and what you have to say.

  81. House Training DogDecember 30, 2010 @ 10:44 AM

    for the baby to sit next to me in his career. If I could recover in a niche you can

  82. Cure Your AcneDecember 30, 2010 @ 07:09 PM

    Some media are owning to spend attention to this.

  83. marriage savesJanuary 04, 2011 @ 08:06 AM

    Well Done!I do wish u can publish drastically more posts later I even now have an extraordinary offer to research about silverlight.

  84. Internet Marketing LeedsJanuary 04, 2011 @ 05:59 PM

    yup I do wish u can publish drastically more posts later I even now have an extraordinary offer to research about silverlight.so keep on marriage and say all is well.

  85. What are the single product this season is will enter almirah, and what is the most popular sheet is tasted beauties stars favorite?Sapphire blue successful open European nobility female gate, gossip girl under the lead lifted a stream of blue storm…Gossip: what kind of dressing girls have treasure?Together and see it!

  86. Skin Tags RemovalJanuary 10, 2011 @ 04:45 AM

    I’m a new big user so need as much help as possible.the great

  87. This warm degrees best feet accessories and is worthy of many women love most, except warm outside, boots peculiar on the legs of the modification, also is other hard to deserve to comprehend.Skirt or Legging collocation are together, in winter seems like “necessary”.But sometimes this kind of collocation see more will aesthetical fatigue, true want to shout a voice in the streets: isn’t big boots besides collocation of black silk, Legging and no better choice?

  88. What are the single product this season is will enter almirah, and what is the most popular sheet is tasted beauties stars favorite?Sapphire blue successful open European nobility female gate, gossip girl under the lead lifted a stream of blue storm…Gossip: what kind of dressing girls have treasure?Together and see it!

  89. SaleJanuary 19, 2011 @ 03:11 AM

    I think it opens the website is very nice and I like to have web sites of mine, but you so beautiful I do not how good web design and people who collect my website could you help me friends

  90. wtt2011January 21, 2011 @ 09:01 AM

    This is a very good post, I learn very much, I will invited my friend to vist it. our site is also very good, we have [url=http://www.coachoutletus.net]coach outlet[/url]t, [url=http://www.coachoutletus.net]coach handbags[/url], [url=http://www.coachoutletus.net]coach bags[/url], [url=http://www.coachoutletus.net]coach outlet store[/url],welcome to vist.

  91. wtt2011January 21, 2011 @ 09:02 AM

    This is a very good post, I learn very much, I will invited my friend to vist it. our site is also very good, we have coach outlet, coach handbags, coach bags, coach outlet store,welcome to vist.

  92. LunettesJanuary 22, 2011 @ 10:03 PM

    good poset !I do wish u can publish more posts later I even now have an extraordinary offer to research about silverlight. Lunettes Ray Ban

  93. Cadeau de naissanceJanuary 23, 2011 @ 08:49 AM

    Great job we like it . cadeaux naissance bébé

  94. DamienFebruary 05, 2011 @ 10:34 AM

    Hi all,

    Thanks for help to understand characters of computers ! Because it’s for us really easy to find something on this site to improve ours about the financial advises and Forex. Thank you very much !

  95. DamienFebruary 05, 2011 @ 10:41 AM

    Thanks for help to understand characters of computers ! Because it’s for us really easy to find something on this site to improve ours about the financial advises and Forex . Thanks all much !

  96. <span class="author"><a href="http://www.foxytradingclub.com/analyses-forex/February 05, 2011 @ 10:51 AM

    Thanks for help to understand characters of computers ! Because it’s for us really easy to find something on this site to improve ours about the financial advises and Forex . Thanks all much !

  97. Events in PittsburghFebruary 07, 2011 @ 11:09 AM

    This warm degrees best feet accessories and is worthy of many women love most, except warm outside, boots peculiar on the legs of the modification, also is other hard to deserve to comprehend.

  98. lowongan kerjaFebruary 07, 2011 @ 01:18 PM

    An interesting discussion is worth comment. I think that you should write more on this topic, it might not be a taboo subject but generally people are not enough to speak on such topics. To the next. Cheers for xbox 360..

  99. wagner brake padsFebruary 07, 2011 @ 03:11 PM

    Hello, the type code really help me much. Thank you for the suggestion and code.

  100. inisipFebruary 10, 2011 @ 04:55 PM

    The article is quite interesting and it gave me very reliable and useful information. I like to read such valuable articles as it increase my knowledge of iniSip

  101. silk duvetsFebruary 11, 2011 @ 03:09 AM

    A nice tip,very thanks for your tip.

  102. WalletsFebruary 12, 2011 @ 03:02 PM

    Great tutorial and very well written. Thanks for sharing ;)

  103. Nike pas cherFebruary 16, 2011 @ 01:53 PM

    It’s good to see th hanx now i have the link which i was looking for my research.

  104. Gadget news and reviewsFebruary 16, 2011 @ 04:33 PM

    I am very pleased that I was able to find such a great resource for gaining a deeper knowledge on the topic. It is always very important to study various opinions, evaluate them and get hold of a best answer for any question someone may face. That is exactly what I got here, surprisingly, free of charge. Thanks a lot!

  105. Gadget news and reviewsFebruary 18, 2011 @ 05:57 AM

    The problem statement of this article

  106. facial exerciseFebruary 19, 2011 @ 11:59 AM

    This is a smart tutorial… thanks for share

  107. printingFebruary 20, 2011 @ 10:44 AM

    i really nice tutorial, yet more help for my printing site, without these online i’d really struggle to build my sites.

  108. cheap range cookersFebruary 20, 2011 @ 10:45 AM

    i agree, it’s good for my range cookers site too.

  109. menu printingFebruary 20, 2011 @ 10:52 AM

    unbelievable, i’ve got a printing site too which i used this on! Cheers!

  110. Go pedFebruary 24, 2011 @ 10:26 AM

    i really nice tutorial, yet more help for my printing site, without these online i’d really struggle to build my sites.

  111. Top grade UGG boots;The best Replica UGG boots

  112. Although in the production of wool boots and wool products, and in blessing Ken bridge built up his own UGG stores.

  113. Monster beatsFebruary 26, 2011 @ 06:25 AM

    here are various models on the market the product more and more

  114. murrieta dentistFebruary 26, 2011 @ 10:41 AM

    This code will be very handy to have when the time comes to use it.

  115. lvMarch 01, 2011 @ 02:27 AM

    xiaoru

  116. lvMarch 01, 2011 @ 02:32 AM

    xiaoru

  117. Albert FrankMarch 01, 2011 @ 08:55 AM

    Hi, for any thesis help, dissertation help and Online Tutoring that you need in Engineering subjects that you need, you can visit our website at http://www.helpwiththesis.com . We provide the above services at a minimal cost.

  118. hospedagemMarch 01, 2011 @ 07:53 PM

    Solid tutorial and explanatory. Congratulations. It was exactly what I was looking for. Thank you.

  119. Convert Youtube VideoMarch 02, 2011 @ 12:56 PM

    Thanks a lot for this information i think that what you have write is true and a

    lot of user can be read more about this tread

    downloadyoutubevideos

  120. chanel saleMarch 04, 2011 @ 01:52 AM

    Thanks a lot for this information i think that what you have write is true and a

    lot of user can be read more about this tread

  121. RuggyMarch 04, 2011 @ 01:43 PM

    Thanks a lot for this information i think that what you have write is true and a lot of user can be read more about this tread red riding hood download limitless download watch limitless online watch the lincoln lawyer online

  122. arabic alphabetMarch 06, 2011 @ 11:13 PM

    Another great set, I appreciate all the work you put into this site, helping out others with your fun and creative works. Arabic Alphabet arapska slova

  123. 47ld520March 07, 2011 @ 11:05 AM

    Though a bit over my head the information you have provided is truly valued, thank you for the post. But then again I guess if I read a few more things here I’ll be able to understand it a bit better, thanks again.

  124. cnc spindle repairMarch 07, 2011 @ 11:26 AM

    This is a very good post, I learn very much, I will invited my friend to vist it. our site is also very good…...... cnc spindle repair

  125. david77March 10, 2011 @ 05:29 AM

    The quarkruby is a blog by ritesh arora and nakul aggarwal, where they frequently share their experience & findings about ruby ror.Thanks for sharing the informative post. Regards. david77 – bathing suits

  126. ebooksMarch 10, 2011 @ 09:12 AM

    thanks i have a few ebooks adressing this subject. i’d be happy to share.

  127. spindle repairMarch 11, 2011 @ 06:12 PM

    Really great information and inspiration, both of which I like. Nice article with very strong content. I love reading it over again. spindle repair

  128. masters in educationMarch 15, 2011 @ 07:34 PM

    A lot of helpful info I really needed to know these stuff, me too. masters in education

  129. HughTWoodberryMarch 16, 2011 @ 07:43 AM

    You can fully relax yourself in NYC to Canada Tours.

  130. masters in public health March 16, 2011 @ 08:48 AM

    When you say to ask Iconv to convert as much as it can does this mean that data will be lost? masters in public health

  131. professional photo printersMarch 20, 2011 @ 10:48 PM

    I agree with your point of view on this topic. I think this needs to be discussed more among the general population. professional photo printer

  132. profit jackpotMarch 24, 2011 @ 01:56 AM

    I think there is a better way to achieve what you achieved. It requires less steps and less semantics. profit jackpot

  133. MattressesMarch 26, 2011 @ 12:47 PM

    Hi, I think this is a very nice post. It will help me and everyone much. Thanks.Mattresses

  134. hotels in palm springsMarch 26, 2011 @ 05:27 PM

    This is the exact way that people expecting we can see most of the comments are true and towards the positive opinion..This is the exact way that people expecting we can see most of the comments are true and towards the positive opinion.. hotels in palm springs

  135. Minnesota Criminal LawyerApril 05, 2011 @ 09:07 PM

    These are some of the best tutorials I have come across. thanks for putting this out.

  136. teknik seo blogspotApril 07, 2011 @ 03:51 PM

    He was not a favourite at the court of Lorenzo the Magnificent as Filippino Lippi and Botticelli were. Lorenzo liked those who would flatter him and do as they were bid, while Leonardo took his own way in everything and never said Cat Supplies what he did not mean.

  137. xtreme profit robotApril 08, 2011 @ 05:45 PM

    the code is somewhat complex. Any idea on how to simplify it? Thanks

  138. hangover 2 quotesApril 11, 2011 @ 02:52 PM

    Wow , that is pretty bold. She has got like 5 different looks going on there. high heels, fur, big glasses, it looks like she just grabbed everything laying around and put it on.

  139. Dental JobsApril 12, 2011 @ 12:09 PM

    Great blog. It has been helpful in the development of our new site

  140. free lyrics mp3 downloadApril 14, 2011 @ 10:28 AM

    She has got like 5 different looks going on there,,Great blog,I think this is a very nice post

  141. superior essaysApril 14, 2011 @ 02:11 PM

    Thanks wrote on this topic. Thought no one will bother. Though I don’t agree with everything that has been written here but a lot of it also makes a lot of sense. I would love to read a little more about it.

  142. AC Repair ClearwaterApril 18, 2011 @ 07:09 PM

    I had got a desire to begin my own organization, however I did not earn enough of cash to do this.

  143. rerryJeatHyncMarch 28, 2012 @ 12:24 AM

    Hey friends! I’m new here and I wanted to share smething really awesome with you. It’s an ebook that I got myself few months ago. It’s really interesting and fun to read. It teaches you how to manipulate with people to earn money, in a good way. It’s some kind of marketing ebook it helps you to make money. I really enjoyed reading it and hope you will too. I added download link to below:

    http://li-nk.us/rgxe

    Just copy and paste it :)

    Take care guys & girls!