pstuteville-scrubyt 0.4.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. data/CHANGELOG +355 -0
  2. data/COPYING +340 -0
  3. data/README.rdoc +121 -0
  4. data/Rakefile +120 -0
  5. data/VERSION +1 -0
  6. data/examples/README.txt +1 -0
  7. data/examples/events/delta/input.html +682 -0
  8. data/examples/events/delta/test.rb +16 -0
  9. data/examples/misc/auto_regex/input.html +22 -0
  10. data/examples/misc/auto_regex/test.rb +14 -0
  11. data/examples/misc/compound_example/advanced/test.rb +11 -0
  12. data/examples/misc/compound_example/advanced/tricky_compound.html +9 -0
  13. data/examples/misc/compound_example/regexp/regexp_compound.html +17 -0
  14. data/examples/misc/compound_example/regexp/test.rb +11 -0
  15. data/examples/misc/compound_example/simple/compound.html +5 -0
  16. data/examples/misc/compound_example/simple/test.rb +11 -0
  17. data/examples/misc/detail_page/detailpage.html +6 -0
  18. data/examples/misc/detail_page/index.html +9 -0
  19. data/examples/misc/detail_page/test.rb +17 -0
  20. data/examples/misc/google/test.rb +39 -0
  21. data/examples/misc/identical_examples/data_extractor_export.rb +12 -0
  22. data/examples/misc/identical_examples/input.html +16 -0
  23. data/examples/misc/identical_examples/test.rb +15 -0
  24. data/examples/misc/immediate_attribute_extraction/data_extractor_export.rb +10 -0
  25. data/examples/misc/immediate_attribute_extraction/input.html +16 -0
  26. data/examples/misc/immediate_attribute_extraction/test.rb +14 -0
  27. data/examples/misc/multiple_examples/input.html +7 -0
  28. data/examples/misc/multiple_examples/test.rb +22 -0
  29. data/examples/misc/on_click_next/next_page_link.rb +42 -0
  30. data/examples/misc/on_click_next/page_1.html +10 -0
  31. data/examples/misc/on_click_next/page_2.html +10 -0
  32. data/examples/misc/on_click_next/page_3.html +7 -0
  33. data/examples/misc/rubycorner/test.rb +29 -0
  34. data/examples/misc/rubyforge_login/test.rb +30 -0
  35. data/examples/misc/tables/ambigous_records/input.html +17 -0
  36. data/examples/misc/tables/ambigous_records/test.rb +37 -0
  37. data/examples/misc/tables/another_plain_table/input.html +15 -0
  38. data/examples/misc/tables/another_plain_table/test.rb +25 -0
  39. data/examples/misc/tables/complex_table/input.html +45 -0
  40. data/examples/misc/tables/complex_table/test.rb +30 -0
  41. data/examples/misc/tables/grab_rows/input.html +20 -0
  42. data/examples/misc/tables/grab_rows/test.rb +30 -0
  43. data/examples/misc/tables/plain_table/input.html +39 -0
  44. data/examples/misc/tables/plain_table/test.rb +35 -0
  45. data/examples/misc/tables/plain_table_morepages/2.html +38 -0
  46. data/examples/misc/tables/plain_table_morepages/3.html +33 -0
  47. data/examples/misc/tables/plain_table_morepages/input.html +40 -0
  48. data/examples/misc/tables/plain_table_morepages/test.rb +32 -0
  49. data/examples/misc/tables/plain_table_morepages_with_image/2.html +40 -0
  50. data/examples/misc/tables/plain_table_morepages_with_image/3.html +33 -0
  51. data/examples/misc/tables/plain_table_morepages_with_image/images/right_arrow.png +0 -0
  52. data/examples/misc/tables/plain_table_morepages_with_image/input.html +42 -0
  53. data/examples/misc/tables/plain_table_morepages_with_image/test.rb +32 -0
  54. data/examples/misc/tables/test_select_indices/input.html +46 -0
  55. data/examples/misc/tables/test_select_indices/test.rb +55 -0
  56. data/examples/misc/xpath_example_type/input.html +15 -0
  57. data/examples/misc/xpath_example_type/test.rb +18 -0
  58. data/examples/misc/yahoo_finance/test.rb +26 -0
  59. data/examples/social/blog_comment/test.rb +27 -0
  60. data/examples/social/del.icio.us/test.rb +22 -0
  61. data/examples/social/digg/test.rb +37 -0
  62. data/examples/social/dzone/test.rb +28 -0
  63. data/examples/social/linkedin/linkedin.rb +23 -0
  64. data/examples/social/reddit/test.rb +23 -0
  65. data/examples/tones_extractor_export.rb +23 -0
  66. data/examples/webshops/amazon/002-8212888-3924065.html +5311 -0
  67. data/examples/webshops/amazon/002-8212888-3924065_files/0130796034.jpg +0 -0
  68. data/examples/webshops/amazon/002-8212888-3924065_files/020161622X.jpg +0 -0
  69. data/examples/webshops/amazon/002-8212888-3924065_files/0321223675.jpg +0 -0
  70. data/examples/webshops/amazon/002-8212888-3924065_files/0465067107.jpg +0 -0
  71. data/examples/webshops/amazon/002-8212888-3924065_files/0470069155.jpg +0 -0
  72. data/examples/webshops/amazon/002-8212888-3924065_files/0470081201.jpg +0 -0
  73. data/examples/webshops/amazon/002-8212888-3924065_files/0596005253.jpg +0 -0
  74. data/examples/webshops/amazon/002-8212888-3924065_files/0596101325.jpg +0 -0
  75. data/examples/webshops/amazon/002-8212888-3924065_files/0596523696.jpg +0 -0
  76. data/examples/webshops/amazon/002-8212888-3924065_files/0672328844.jpg +0 -0
  77. data/examples/webshops/amazon/002-8212888-3924065_files/0764596861.jpg +0 -0
  78. data/examples/webshops/amazon/002-8212888-3924065_files/0974514055.jpg +0 -0
  79. data/examples/webshops/amazon/002-8212888-3924065_files/0976694069.jpg +0 -0
  80. data/examples/webshops/amazon/002-8212888-3924065_files/0977616606.jpg +0 -0
  81. data/examples/webshops/amazon/002-8212888-3924065_files/0977616614.jpg +0 -0
  82. data/examples/webshops/amazon/002-8212888-3924065_files/0977616630.jpg +0 -0
  83. data/examples/webshops/amazon/002-8212888-3924065_files/1590597362.jpg +0 -0
  84. data/examples/webshops/amazon/002-8212888-3924065_files/1594480060.jpg +0 -0
  85. data/examples/webshops/amazon/002-8212888-3924065_files/1932394699.jpg +0 -0
  86. data/examples/webshops/amazon/002-8212888-3924065_files/2841772101.jpg +0 -0
  87. data/examples/webshops/amazon/002-8212888-3924065_files/amzn-logo-118w.gif +0 -0
  88. data/examples/webshops/amazon/002-8212888-3924065_files/askville-adwidget-bullet.gif +0 -0
  89. data/examples/webshops/amazon/002-8212888-3924065_files/askville-logo-sm-adwidget-white-bg.gif +0 -0
  90. data/examples/webshops/amazon/002-8212888-3924065_files/book_display_on_website-icon.gif +0 -0
  91. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-no-ns.gif +0 -0
  92. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-no.gif +0 -0
  93. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-yes-ns.gif +0 -0
  94. data/examples/webshops/amazon/002-8212888-3924065_files/btn-inactive-yes.gif +0 -0
  95. data/examples/webshops/amazon/002-8212888-3924065_files/btn-no-tiny.gif +0 -0
  96. data/examples/webshops/amazon/002-8212888-3924065_files/btn-yes-tiny.gif +0 -0
  97. data/examples/webshops/amazon/002-8212888-3924065_files/buybox-button-find-gifts-a.gif +0 -0
  98. data/examples/webshops/amazon/002-8212888-3924065_files/c7y_badge_rn_1.gif +0 -0
  99. data/examples/webshops/amazon/002-8212888-3924065_files/cap-a9-3.gif +0 -0
  100. data/examples/webshops/amazon/002-8212888-3924065_files/drop-down-icon-small-arrow.gif +0 -0
  101. data/examples/webshops/amazon/002-8212888-3924065_files/endcap-a9-go-2.gif +0 -0
  102. data/examples/webshops/amazon/002-8212888-3924065_files/gb-open-new.gif +0 -0
  103. data/examples/webshops/amazon/002-8212888-3924065_files/gc-logo-popover-a.gif +0 -0
  104. data/examples/webshops/amazon/002-8212888-3924065_files/gift-cert-roto-pop-a.gif +0 -0
  105. data/examples/webshops/amazon/002-8212888-3924065_files/go-button-books.gif +0 -0
  106. data/examples/webshops/amazon/002-8212888-3924065_files/go-button.gif +0 -0
  107. data/examples/webshops/amazon/002-8212888-3924065_files/go-orange-trans.gif +0 -0
  108. data/examples/webshops/amazon/002-8212888-3924065_files/go_button_photo.gif +0 -0
  109. data/examples/webshops/amazon/002-8212888-3924065_files/logo-off.gif +0 -0
  110. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-events-18134.js +1407 -0
  111. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-n2v1-57871.css +364 -0
  112. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-simplePopover-41153.js +749 -0
  113. data/examples/webshops/amazon/002-8212888-3924065_files/n2CoreLibs-utilities-25439.js +1608 -0
  114. data/examples/webshops/amazon/002-8212888-3924065_files/orange-arrow.gif +0 -0
  115. data/examples/webshops/amazon/002-8212888-3924065_files/orange-arrow_002.gif +0 -0
  116. data/examples/webshops/amazon/002-8212888-3924065_files/popover-blurb.gif +0 -0
  117. data/examples/webshops/amazon/002-8212888-3924065_files/powered-by-a9.gif +0 -0
  118. data/examples/webshops/amazon/002-8212888-3924065_files/stars-3-5.gif +0 -0
  119. data/examples/webshops/amazon/002-8212888-3924065_files/stars-4-0.gif +0 -0
  120. data/examples/webshops/amazon/002-8212888-3924065_files/stars-4-5.gif +0 -0
  121. data/examples/webshops/amazon/002-8212888-3924065_files/stars-5-0.gif +0 -0
  122. data/examples/webshops/amazon/002-8212888-3924065_files/tagline-adwidget.gif +0 -0
  123. data/examples/webshops/amazon/002-8212888-3924065_files/topnav-cart.gif +0 -0
  124. data/examples/webshops/amazon/002-8212888-3924065_files/transparent-pixel.gif +0 -0
  125. data/examples/webshops/amazon/002-8212888-3924065_files/transparent-pixel_002.gif +0 -0
  126. data/examples/webshops/amazon/test.rb +27 -0
  127. data/examples/webshops/amazon-online/test.rb +34 -0
  128. data/examples/webshops/barnes_and_noble/test.rb +32 -0
  129. data/examples/webshops/barnes_offline/barnes_and_noble.html +115 -0
  130. data/examples/webshops/barnes_offline/barnes_and_noble_files/10964080.gif +0 -0
  131. data/examples/webshops/barnes_offline/barnes_and_noble_files/10999676.gif +0 -0
  132. data/examples/webshops/barnes_offline/barnes_and_noble_files/11018492.gif +0 -0
  133. data/examples/webshops/barnes_offline/barnes_and_noble_files/11656534.gif +0 -0
  134. data/examples/webshops/barnes_offline/barnes_and_noble_files/11985045.gif +0 -0
  135. data/examples/webshops/barnes_offline/barnes_and_noble_files/12052378.gif +0 -0
  136. data/examples/webshops/barnes_offline/barnes_and_noble_files/12138286.gif +0 -0
  137. data/examples/webshops/barnes_offline/barnes_and_noble_files/12533212.gif +0 -0
  138. data/examples/webshops/barnes_offline/barnes_and_noble_files/12533268.gif +0 -0
  139. data/examples/webshops/barnes_offline/barnes_and_noble_files/9583392.gif +0 -0
  140. data/examples/webshops/barnes_offline/barnes_and_noble_files/SearchProduct.css +626 -0
  141. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin3_gtpointup.gif +0 -0
  142. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_aboutshipping.gif +0 -0
  143. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_account.gif +0 -0
  144. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_colon.gif +0 -0
  145. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_giftreminder.gif +0 -0
  146. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_help.gif +0 -0
  147. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_orderstatus.gif +0 -0
  148. data/examples/webshops/barnes_offline/barnes_and_noble_files/admin_wishlist.gif +0 -0
  149. data/examples/webshops/barnes_offline/barnes_and_noble_files/bg.gif +0 -0
  150. data/examples/webshops/barnes_offline/barnes_and_noble_files/btnGoGrn.gif +0 -0
  151. data/examples/webshops/barnes_offline/barnes_and_noble_files/cleardot.gif +0 -0
  152. data/examples/webshops/barnes_offline/barnes_and_noble_files/cleardot_002.gif +0 -0
  153. data/examples/webshops/barnes_offline/barnes_and_noble_files/dot4.gif +0 -0
  154. data/examples/webshops/barnes_offline/barnes_and_noble_files/dotGold20.gif +0 -0
  155. data/examples/webshops/barnes_offline/barnes_and_noble_files/hdCantFind.gif +0 -0
  156. data/examples/webshops/barnes_offline/barnes_and_noble_files/hdSearchResults.gif +0 -0
  157. data/examples/webshops/barnes_offline/barnes_and_noble_files/hgg_tab_home_cold.gif +0 -0
  158. data/examples/webshops/barnes_offline/barnes_and_noble_files/hgg_tab_toy_cold.gif +0 -0
  159. data/examples/webshops/barnes_offline/barnes_and_noble_files/iframeKMP.js +172 -0
  160. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2.html +25 -0
  161. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/070226_mc_lnav_search.gif +0 -0
  162. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/XmlUtil.js +199 -0
  163. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/XslStyleSheet.js +1 -0
  164. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/kmp_gen.css +81 -0
  165. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/product-preview-core.js +337 -0
  166. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/product-preview.css +36 -0
  167. data/examples/webshops/barnes_offline/barnes_and_noble_files/kmp_iframe_cds2_data/productpreview.js +11 -0
  168. data/examples/webshops/barnes_offline/barnes_and_noble_files/linePagination.gif +0 -0
  169. data/examples/webshops/barnes_offline/barnes_and_noble_files/logo_bn05.gif +0 -0
  170. data/examples/webshops/barnes_offline/barnes_and_noble_files/navbar.js +34 -0
  171. data/examples/webshops/barnes_offline/barnes_and_noble_files/navbar_06.css +136 -0
  172. data/examples/webshops/barnes_offline/barnes_and_noble_files/popup_open.js +116 -0
  173. data/examples/webshops/barnes_offline/barnes_and_noble_files/qsearch3_vline_dots.gif +0 -0
  174. data/examples/webshops/barnes_offline/barnes_and_noble_files/qsearch4_search.gif +0 -0
  175. data/examples/webshops/barnes_offline/barnes_and_noble_files/qsearch_AdvSearch.jpg +0 -0
  176. data/examples/webshops/barnes_offline/barnes_and_noble_files/subnav_colon.gif +0 -0
  177. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_Bookclubs_cold.gif +0 -0
  178. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_bnjr_cold.gif +0 -0
  179. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_books_hot.gif +0 -0
  180. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_dvd_cold.gif +0 -0
  181. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_giftcards_cold.gif +0 -0
  182. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_home_cold.gif +0 -0
  183. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_member_cc_cold.gif +0 -0
  184. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_music_cold.gif +0 -0
  185. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_pipe.gif +0 -0
  186. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_textbooksonly_cold.gif +0 -0
  187. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_usedoop_cold.gif +0 -0
  188. data/examples/webshops/barnes_offline/barnes_and_noble_files/tab_videogames_cold.gif +0 -0
  189. data/examples/webshops/barnes_offline/barnes_and_noble_files/toppromo3_rule.gif +0 -0
  190. data/examples/webshops/barnes_offline/barnes_and_noble_files/toppromo_fastfree05.gif +0 -0
  191. data/examples/webshops/barnes_offline/barnes_and_noble_files/vcart_btn_checkout.gif +0 -0
  192. data/examples/webshops/barnes_offline/barnes_and_noble_files/vcart_icon_cart.gif +0 -0
  193. data/examples/webshops/barnes_offline/barnes_and_noble_files/vcart_topbot_rule.gif +0 -0
  194. data/examples/webshops/barnes_offline/barnes_and_noble_files/visualcart_prodid.js +401 -0
  195. data/examples/webshops/barnes_offline/test.rb +30 -0
  196. data/examples/webshops/buydig/2_files/03AA1BB9089A4A6A92CF23F280D664EB.jpg +0 -0
  197. data/examples/webshops/buydig/2_files/1008.gif +0 -0
  198. data/examples/webshops/buydig/2_files/1013.gif +0 -0
  199. data/examples/webshops/buydig/2_files/1020.gif +0 -0
  200. data/examples/webshops/buydig/2_files/106CF2FB84B446518397517C3E6D5AD8.jpg +0 -0
  201. data/examples/webshops/buydig/2_files/13-www.gif +0 -0
  202. data/examples/webshops/buydig/2_files/1E9BB2E56AB145FC9D6EF952703AF476.jpg +0 -0
  203. data/examples/webshops/buydig/2_files/1FCDFBE85CDB4D429EC2C8CB24D20457.jpg +0 -0
  204. data/examples/webshops/buydig/2_files/1pix.gif +0 -0
  205. data/examples/webshops/buydig/2_files/2014.gif +0 -0
  206. data/examples/webshops/buydig/2_files/2089.gif +0 -0
  207. data/examples/webshops/buydig/2_files/24992_medal.gif +0 -0
  208. data/examples/webshops/buydig/2_files/24BBCBA1397F4DDCBBBBE8456D6D6E5B.jpg +0 -0
  209. data/examples/webshops/buydig/2_files/281F8A6019B140F38DFD45EB7B69B0FB.jpg +0 -0
  210. data/examples/webshops/buydig/2_files/2975F866CB2149F7ACBC559C8E24E304.jpg +0 -0
  211. data/examples/webshops/buydig/2_files/316FC9256DC9460ABC3C5ECAF6C60286.jpg +0 -0
  212. data/examples/webshops/buydig/2_files/50569327D8B94252B95E449AE470E505.jpg +0 -0
  213. data/examples/webshops/buydig/2_files/519CDAB404FA4543B76B5F281468ACBF.jpg +0 -0
  214. data/examples/webshops/buydig/2_files/57D6146419A647BA89C96AF0B5CAB03C.jpg +0 -0
  215. data/examples/webshops/buydig/2_files/58E3F988E184448B8C0A59874AE123A8.jpg +0 -0
  216. data/examples/webshops/buydig/2_files/5E5B10197A4E4C9B9ECCD6309DBE4C54.jpg +0 -0
  217. data/examples/webshops/buydig/2_files/609A249177D04065B37B9161CB0BC92D.jpg +0 -0
  218. data/examples/webshops/buydig/2_files/676CEE8E53C2445982E991871B4DF613.jpg +0 -0
  219. data/examples/webshops/buydig/2_files/712BA08FAB524A31A76ABB9E2009FF8E.jpg +0 -0
  220. data/examples/webshops/buydig/2_files/734BD08D7A5049339393166491D09D21.jpg +0 -0
  221. data/examples/webshops/buydig/2_files/751E72B7003343248497FE6905F80787.jpg +0 -0
  222. data/examples/webshops/buydig/2_files/76493D4F02F14EF7B5886510604C7BB4.jpg +0 -0
  223. data/examples/webshops/buydig/2_files/79521E251278486DB29529C60C9D012A.jpg +0 -0
  224. data/examples/webshops/buydig/2_files/9C9AF82AC3B54BDC8C705278B50FDFD6.jpg +0 -0
  225. data/examples/webshops/buydig/2_files/BC3FD8307B9948FDB7EEF156D8629C37.jpg +0 -0
  226. data/examples/webshops/buydig/2_files/C0DD4574765047D1836F505E69DC8AE5.jpg +0 -0
  227. data/examples/webshops/buydig/2_files/C143F48515274A44B04F4B3E46306BD2.jpg +0 -0
  228. data/examples/webshops/buydig/2_files/C6B02E88F729464699DB275D140F4563.jpg +0 -0
  229. data/examples/webshops/buydig/2_files/CE334D6206DB4FA9AFDF339AEF0AF50F.jpg +0 -0
  230. data/examples/webshops/buydig/2_files/D66AE0DC865A4021AB300ED3A0C4CD11.jpg +0 -0
  231. data/examples/webshops/buydig/2_files/DEA2EC2093DC474D96B651068576DAE5.jpg +0 -0
  232. data/examples/webshops/buydig/2_files/F547677D83844042BF13A4BE6523BB50.jpg +0 -0
  233. data/examples/webshops/buydig/2_files/Rbbbonlineseal.gif +0 -0
  234. data/examples/webshops/buydig/2_files/TopSellers_bottom.gif +0 -0
  235. data/examples/webshops/buydig/2_files/TopSellers_ttl.gif +0 -0
  236. data/examples/webshops/buydig/2_files/addToFavorites_ttl.gif +0 -0
  237. data/examples/webshops/buydig/2_files/banner_CorporateSales.gif +0 -0
  238. data/examples/webshops/buydig/2_files/banner_Shipping.gif +0 -0
  239. data/examples/webshops/buydig/2_files/bizratehonoree.gif +0 -0
  240. data/examples/webshops/buydig/2_files/btn_submit.gif +0 -0
  241. data/examples/webshops/buydig/2_files/checkFlash.js +110 -0
  242. data/examples/webshops/buydig/2_files/checkFlash2.js +109 -0
  243. data/examples/webshops/buydig/2_files/cnetcertified.gif +0 -0
  244. data/examples/webshops/buydig/2_files/credPriceGrabber.gif +0 -0
  245. data/examples/webshops/buydig/2_files/credShopping.gif +0 -0
  246. data/examples/webshops/buydig/2_files/credential_paypal.gif +0 -0
  247. data/examples/webshops/buydig/2_files/credentials.gif +0 -0
  248. data/examples/webshops/buydig/2_files/dealtime.gif +0 -0
  249. data/examples/webshops/buydig/2_files/dvxstyle.css +754 -0
  250. data/examples/webshops/buydig/2_files/footer_021306_1_v1.gif +0 -0
  251. data/examples/webshops/buydig/2_files/func.js +132 -0
  252. data/examples/webshops/buydig/2_files/getseal +1 -0
  253. data/examples/webshops/buydig/2_files/help.gif +0 -0
  254. data/examples/webshops/buydig/2_files/home.gif +0 -0
  255. data/examples/webshops/buydig/2_files/java.js +155 -0
  256. data/examples/webshops/buydig/2_files/leftnv_help.gif +0 -0
  257. data/examples/webshops/buydig/2_files/logo.gif +0 -0
  258. data/examples/webshops/buydig/2_files/logo2.gif +0 -0
  259. data/examples/webshops/buydig/2_files/logo3.gif +0 -0
  260. data/examples/webshops/buydig/2_files/main.js +227 -0
  261. data/examples/webshops/buydig/2_files/mastercard_secured.gif +0 -0
  262. data/examples/webshops/buydig/2_files/newsBox_bkg.jpg +0 -0
  263. data/examples/webshops/buydig/2_files/newsBox_bottom.jpg +0 -0
  264. data/examples/webshops/buydig/2_files/newsBox_text.gif +0 -0
  265. data/examples/webshops/buydig/2_files/newsBox_ttl.jpg +0 -0
  266. data/examples/webshops/buydig/2_files/noimage75.gif +0 -0
  267. data/examples/webshops/buydig/2_files/orangeleftfrmbtm.gif +0 -0
  268. data/examples/webshops/buydig/2_files/pixel153.gif +0 -0
  269. data/examples/webshops/buydig/2_files/rightnv_bottom.gif +0 -0
  270. data/examples/webshops/buydig/2_files/search_btn_off.gif +0 -0
  271. data/examples/webshops/buydig/2_files/search_c1.gif +0 -0
  272. data/examples/webshops/buydig/2_files/search_c2.gif +0 -0
  273. data/examples/webshops/buydig/2_files/search_c3.gif +0 -0
  274. data/examples/webshops/buydig/2_files/search_c4.gif +0 -0
  275. data/examples/webshops/buydig/2_files/search_down.gif +0 -0
  276. data/examples/webshops/buydig/2_files/search_left.gif +0 -0
  277. data/examples/webshops/buydig/2_files/search_right.gif +0 -0
  278. data/examples/webshops/buydig/2_files/search_top.gif +0 -0
  279. data/examples/webshops/buydig/2_files/siteLinks_bottom.gif +0 -0
  280. data/examples/webshops/buydig/2_files/siteLinks_bullet.gif +0 -0
  281. data/examples/webshops/buydig/2_files/siteLinks_ttl.gif +0 -0
  282. data/examples/webshops/buydig/2_files/spacer.gif +0 -0
  283. data/examples/webshops/buydig/2_files/style.js +45 -0
  284. data/examples/webshops/buydig/2_files/styles.html +33 -0
  285. data/examples/webshops/buydig/2_files/track_orders.jpg +0 -0
  286. data/examples/webshops/buydig/2_files/urchin +534 -0
  287. data/examples/webshops/buydig/2_files/verified_by_visa.gif +0 -0
  288. data/examples/webshops/buydig/2_files/welcome.gif +0 -0
  289. data/examples/webshops/buydig/2_files/welcome_ttl.gif +0 -0
  290. data/examples/webshops/buydig/2_files/yahoologo.gif +0 -0
  291. data/examples/webshops/buydig/input.html +1194 -0
  292. data/examples/webshops/buydig/test.rb +31 -0
  293. data/examples/webshops/ebay/test.rb +32 -0
  294. data/examples/webshops/finewines_offline/_finewines.html +1739 -0
  295. data/examples/webshops/finewines_offline/_finewines_cut.html +371 -0
  296. data/examples/webshops/finewines_offline/_finewines_files/011064.jpg +0 -0
  297. data/examples/webshops/finewines_offline/_finewines_files/012674.jpg +0 -0
  298. data/examples/webshops/finewines_offline/_finewines_files/013268.jpg +0 -0
  299. data/examples/webshops/finewines_offline/_finewines_files/013300.jpg +0 -0
  300. data/examples/webshops/finewines_offline/_finewines_files/013409.jpg +0 -0
  301. data/examples/webshops/finewines_offline/_finewines_files/014340.jpg +0 -0
  302. data/examples/webshops/finewines_offline/_finewines_files/015073.jpg +0 -0
  303. data/examples/webshops/finewines_offline/_finewines_files/015255.jpg +0 -0
  304. data/examples/webshops/finewines_offline/_finewines_files/015479.jpg +0 -0
  305. data/examples/webshops/finewines_offline/_finewines_files/015487.jpg +0 -0
  306. data/examples/webshops/finewines_offline/_finewines_files/017038.jpg +0 -0
  307. data/examples/webshops/finewines_offline/_finewines_files/017129.jpg +0 -0
  308. data/examples/webshops/finewines_offline/_finewines_files/017145.jpg +0 -0
  309. data/examples/webshops/finewines_offline/_finewines_files/017152.jpg +0 -0
  310. data/examples/webshops/finewines_offline/_finewines_files/017285.jpg +0 -0
  311. data/examples/webshops/finewines_offline/_finewines_files/017392.jpg +0 -0
  312. data/examples/webshops/finewines_offline/_finewines_files/017400.jpg +0 -0
  313. data/examples/webshops/finewines_offline/_finewines_files/019778.jpg +0 -0
  314. data/examples/webshops/finewines_offline/_finewines_files/019786.jpg +0 -0
  315. data/examples/webshops/finewines_offline/_finewines_files/020503.jpg +0 -0
  316. data/examples/webshops/finewines_offline/_finewines_files/021253.jpg +0 -0
  317. data/examples/webshops/finewines_offline/_finewines_files/021279.jpg +0 -0
  318. data/examples/webshops/finewines_offline/_finewines_files/021337.jpg +0 -0
  319. data/examples/webshops/finewines_offline/_finewines_files/021352.jpg +0 -0
  320. data/examples/webshops/finewines_offline/_finewines_files/023002.jpg +0 -0
  321. data/examples/webshops/finewines_offline/_finewines_files/023135.jpg +0 -0
  322. data/examples/webshops/finewines_offline/_finewines_files/023143.jpg +0 -0
  323. data/examples/webshops/finewines_offline/_finewines_files/023788.jpg +0 -0
  324. data/examples/webshops/finewines_offline/_finewines_files/024166.jpg +0 -0
  325. data/examples/webshops/finewines_offline/_finewines_files/024182.jpg +0 -0
  326. data/examples/webshops/finewines_offline/_finewines_files/024216.jpg +0 -0
  327. data/examples/webshops/finewines_offline/_finewines_files/027268.jpg +0 -0
  328. data/examples/webshops/finewines_offline/_finewines_files/027516.jpg +0 -0
  329. data/examples/webshops/finewines_offline/_finewines_files/027862.jpg +0 -0
  330. data/examples/webshops/finewines_offline/_finewines_files/028118.jpg +0 -0
  331. data/examples/webshops/finewines_offline/_finewines_files/028936.jpg +0 -0
  332. data/examples/webshops/finewines_offline/_finewines_files/033894.jpg +0 -0
  333. data/examples/webshops/finewines_offline/_finewines_files/033902.jpg +0 -0
  334. data/examples/webshops/finewines_offline/_finewines_files/033910.jpg +0 -0
  335. data/examples/webshops/finewines_offline/_finewines_files/033936.jpg +0 -0
  336. data/examples/webshops/finewines_offline/_finewines_files/033944.jpg +0 -0
  337. data/examples/webshops/finewines_offline/_finewines_files/033951.jpg +0 -0
  338. data/examples/webshops/finewines_offline/_finewines_files/034553.jpg +0 -0
  339. data/examples/webshops/finewines_offline/_finewines_files/034561.jpg +0 -0
  340. data/examples/webshops/finewines_offline/_finewines_files/232439.jpg +0 -0
  341. data/examples/webshops/finewines_offline/_finewines_files/237834.jpg +0 -0
  342. data/examples/webshops/finewines_offline/_finewines_files/268359.jpg +0 -0
  343. data/examples/webshops/finewines_offline/_finewines_files/289082.jpg +0 -0
  344. data/examples/webshops/finewines_offline/_finewines_files/331603.jpg +0 -0
  345. data/examples/webshops/finewines_offline/_finewines_files/369686.jpg +0 -0
  346. data/examples/webshops/finewines_offline/_finewines_files/420257.jpg +0 -0
  347. data/examples/webshops/finewines_offline/_finewines_files/422014.jpg +0 -0
  348. data/examples/webshops/finewines_offline/_finewines_files/460410.jpg +0 -0
  349. data/examples/webshops/finewines_offline/_finewines_files/480533.jpg +0 -0
  350. data/examples/webshops/finewines_offline/_finewines_files/556795.jpg +0 -0
  351. data/examples/webshops/finewines_offline/_finewines_files/597054.jpg +0 -0
  352. data/examples/webshops/finewines_offline/_finewines_files/650606.jpg +0 -0
  353. data/examples/webshops/finewines_offline/_finewines_files/652628.jpg +0 -0
  354. data/examples/webshops/finewines_offline/_finewines_files/653790.jpg +0 -0
  355. data/examples/webshops/finewines_offline/_finewines_files/658450.jpg +0 -0
  356. data/examples/webshops/finewines_offline/_finewines_files/660027.jpg +0 -0
  357. data/examples/webshops/finewines_offline/_finewines_files/660951.jpg +0 -0
  358. data/examples/webshops/finewines_offline/_finewines_files/684514.jpg +0 -0
  359. data/examples/webshops/finewines_offline/_finewines_files/685131.jpg +0 -0
  360. data/examples/webshops/finewines_offline/_finewines_files/686865.jpg +0 -0
  361. data/examples/webshops/finewines_offline/_finewines_files/699330.jpg +0 -0
  362. data/examples/webshops/finewines_offline/_finewines_files/703017.jpg +0 -0
  363. data/examples/webshops/finewines_offline/_finewines_files/703140.jpg +0 -0
  364. data/examples/webshops/finewines_offline/_finewines_files/703850.jpg +0 -0
  365. data/examples/webshops/finewines_offline/_finewines_files/717306.jpg +0 -0
  366. data/examples/webshops/finewines_offline/_finewines_files/900274.jpg +0 -0
  367. data/examples/webshops/finewines_offline/_finewines_files/938225.jpg +0 -0
  368. data/examples/webshops/finewines_offline/_finewines_files/947440.jpg +0 -0
  369. data/examples/webshops/finewines_offline/_finewines_files/951319.jpg +0 -0
  370. data/examples/webshops/finewines_offline/_finewines_files/967893.jpg +0 -0
  371. data/examples/webshops/finewines_offline/_finewines_files/981407.jpg +0 -0
  372. data/examples/webshops/finewines_offline/_finewines_files/981613.jpg +0 -0
  373. data/examples/webshops/finewines_offline/_finewines_files/982421.jpg +0 -0
  374. data/examples/webshops/finewines_offline/_finewines_files/985598.jpg +0 -0
  375. data/examples/webshops/finewines_offline/_finewines_files/986737.jpg +0 -0
  376. data/examples/webshops/finewines_offline/_finewines_files/987503.jpg +0 -0
  377. data/examples/webshops/finewines_offline/_finewines_files/992800.jpg +0 -0
  378. data/examples/webshops/finewines_offline/_finewines_files/VintageslogoEN.gif +0 -0
  379. data/examples/webshops/finewines_offline/_finewines_files/blanc-up.gif +0 -0
  380. data/examples/webshops/finewines_offline/_finewines_files/btn_vintages_latest.gif +0 -0
  381. data/examples/webshops/finewines_offline/_finewines_files/cc_en.gif +0 -0
  382. data/examples/webshops/finewines_offline/_finewines_files/common.js +860 -0
  383. data/examples/webshops/finewines_offline/_finewines_files/drink.gif +0 -0
  384. data/examples/webshops/finewines_offline/_finewines_files/drinkhold.gif +0 -0
  385. data/examples/webshops/finewines_offline/_finewines_files/ec_en.gif +0 -0
  386. data/examples/webshops/finewines_offline/_finewines_files/ev_en.gif +0 -0
  387. data/examples/webshops/finewines_offline/_finewines_files/hold.gif +0 -0
  388. data/examples/webshops/finewines_offline/_finewines_files/index-wines-features.jpg +0 -0
  389. data/examples/webshops/finewines_offline/_finewines_files/indexSTYLE.css +398 -0
  390. data/examples/webshops/finewines_offline/_finewines_files/keyword_search.gif +0 -0
  391. data/examples/webshops/finewines_offline/_finewines_files/mm_menu.js +1 -0
  392. data/examples/webshops/finewines_offline/_finewines_files/nr_en.gif +0 -0
  393. data/examples/webshops/finewines_offline/_finewines_files/ontario_en.gif +0 -0
  394. data/examples/webshops/finewines_offline/_finewines_files/popup.js +81 -0
  395. data/examples/webshops/finewines_offline/_finewines_files/releases_nav.js +229 -0
  396. data/examples/webshops/finewines_offline/_finewines_files/so_en.gif +0 -0
  397. data/examples/webshops/finewines_offline/_finewines_files/spacer.gif +0 -0
  398. data/examples/webshops/finewines_offline/_finewines_files/top.gif +0 -0
  399. data/examples/webshops/finewines_offline/_finewines_files/urchin.js +576 -0
  400. data/examples/webshops/finewines_offline/_finewines_files/wom_en.gif +0 -0
  401. data/examples/webshops/finewines_offline/test.rb +30 -0
  402. data/examples/webshops/us1camera/1_files/1pix.gif +0 -0
  403. data/examples/webshops/us1camera/1_files/1pix_002.gif +0 -0
  404. data/examples/webshops/us1camera/1_files/CnetCertified.gif +0 -0
  405. data/examples/webshops/us1camera/1_files/CyberSource.gif +0 -0
  406. data/examples/webshops/us1camera/1_files/Images50.gif +0 -0
  407. data/examples/webshops/us1camera/1_files/Images50_002.gif +0 -0
  408. data/examples/webshops/us1camera/1_files/Images50_003.gif +0 -0
  409. data/examples/webshops/us1camera/1_files/Images50_004.gif +0 -0
  410. data/examples/webshops/us1camera/1_files/Images50_005.gif +0 -0
  411. data/examples/webshops/us1camera/1_files/Images50_006.gif +0 -0
  412. data/examples/webshops/us1camera/1_files/PriceGrabber.gif +0 -0
  413. data/examples/webshops/us1camera/1_files/QSearch.gif +0 -0
  414. data/examples/webshops/us1camera/1_files/ban-m.jpg +0 -0
  415. data/examples/webshops/us1camera/1_files/banner1.bin +0 -0
  416. data/examples/webshops/us1camera/1_files/banner3.bin +0 -0
  417. data/examples/webshops/us1camera/1_files/block1.jpg +0 -0
  418. data/examples/webshops/us1camera/1_files/block2.jpg +0 -0
  419. data/examples/webshops/us1camera/1_files/block3.jpg +0 -0
  420. data/examples/webshops/us1camera/1_files/block4.jpg +0 -0
  421. data/examples/webshops/us1camera/1_files/block5.jpg +0 -0
  422. data/examples/webshops/us1camera/1_files/block6.jpg +0 -0
  423. data/examples/webshops/us1camera/1_files/bos.js +280 -0
  424. data/examples/webshops/us1camera/1_files/box1.jpg +0 -0
  425. data/examples/webshops/us1camera/1_files/box2.jpg +0 -0
  426. data/examples/webshops/us1camera/1_files/box3.jpg +0 -0
  427. data/examples/webshops/us1camera/1_files/box4.jpg +0 -0
  428. data/examples/webshops/us1camera/1_files/dot.jpg +0 -0
  429. data/examples/webshops/us1camera/1_files/eDevix.gif +0 -0
  430. data/examples/webshops/us1camera/1_files/electronics1.jpg +0 -0
  431. data/examples/webshops/us1camera/1_files/getseal +1 -0
  432. data/examples/webshops/us1camera/1_files/pride.jpg +0 -0
  433. data/examples/webshops/us1camera/1_files/search.jpg +0 -0
  434. data/examples/webshops/us1camera/1_files/sidebutton.jpg +0 -0
  435. data/examples/webshops/us1camera/1_files/sslroilogic.js +49 -0
  436. data/examples/webshops/us1camera/1_files/style.css +1 -0
  437. data/examples/webshops/us1camera/1_files/tl.html +2 -0
  438. data/examples/webshops/us1camera/input.html +548 -0
  439. data/examples/webshops/us1camera/test.rb +37 -0
  440. data/lib/scrubyt/core/navigation/agents/firewatir.rb +285 -0
  441. data/lib/scrubyt/core/navigation/agents/mechanize.rb +315 -0
  442. data/lib/scrubyt/core/navigation/fetch_action.rb +63 -0
  443. data/lib/scrubyt/core/navigation/navigation_actions.rb +107 -0
  444. data/lib/scrubyt/core/scraping/compound_example.rb +30 -0
  445. data/lib/scrubyt/core/scraping/constraint.rb +169 -0
  446. data/lib/scrubyt/core/scraping/constraint_adder.rb +49 -0
  447. data/lib/scrubyt/core/scraping/filters/attribute_filter.rb +14 -0
  448. data/lib/scrubyt/core/scraping/filters/base_filter.rb +112 -0
  449. data/lib/scrubyt/core/scraping/filters/constant_filter.rb +9 -0
  450. data/lib/scrubyt/core/scraping/filters/detail_page_filter.rb +37 -0
  451. data/lib/scrubyt/core/scraping/filters/download_filter.rb +64 -0
  452. data/lib/scrubyt/core/scraping/filters/html_subtree_filter.rb +9 -0
  453. data/lib/scrubyt/core/scraping/filters/regexp_filter.rb +13 -0
  454. data/lib/scrubyt/core/scraping/filters/script_filter.rb +11 -0
  455. data/lib/scrubyt/core/scraping/filters/text_filter.rb +34 -0
  456. data/lib/scrubyt/core/scraping/filters/tree_filter.rb +138 -0
  457. data/lib/scrubyt/core/scraping/pattern.rb +359 -0
  458. data/lib/scrubyt/core/scraping/pre_filter_document.rb +14 -0
  459. data/lib/scrubyt/core/scraping/result_indexer.rb +90 -0
  460. data/lib/scrubyt/core/shared/extractor.rb +171 -0
  461. data/lib/scrubyt/logging.rb +154 -0
  462. data/lib/scrubyt/output/post_processor.rb +139 -0
  463. data/lib/scrubyt/output/result.rb +44 -0
  464. data/lib/scrubyt/output/result_dumper.rb +154 -0
  465. data/lib/scrubyt/output/result_node.rb +145 -0
  466. data/lib/scrubyt/output/scrubyt_result.rb +42 -0
  467. data/lib/scrubyt/utils/compound_example_lookup.rb +50 -0
  468. data/lib/scrubyt/utils/ruby_extensions.rb +85 -0
  469. data/lib/scrubyt/utils/shared_utils.rb +58 -0
  470. data/lib/scrubyt/utils/simple_example_lookup.rb +40 -0
  471. data/lib/scrubyt/utils/xpathutils.rb +202 -0
  472. data/lib/scrubyt.rb +53 -0
  473. data/pkg/scrubyt-0.4.31.gem +0 -0
  474. data/resources/allison/LICENSE +184 -0
  475. data/resources/allison/README +37 -0
  476. data/resources/allison/allison.css +301 -0
  477. data/resources/allison/allison.gif +0 -0
  478. data/resources/allison/allison.js +307 -0
  479. data/resources/allison/allison.rb +287 -0
  480. data/resources/allison/cache/BODY +588 -0
  481. data/resources/allison/cache/CLASS_INDEX +4 -0
  482. data/resources/allison/cache/CLASS_PAGE +1 -0
  483. data/resources/allison/cache/FILE_INDEX +4 -0
  484. data/resources/allison/cache/FILE_PAGE +1 -0
  485. data/resources/allison/cache/FONTS +1 -0
  486. data/resources/allison/cache/FR_INDEX_BODY +1 -0
  487. data/resources/allison/cache/IMGPATH +1 -0
  488. data/resources/allison/cache/INDEX +1 -0
  489. data/resources/allison/cache/JAVASCRIPT +307 -0
  490. data/resources/allison/cache/METHOD_INDEX +4 -0
  491. data/resources/allison/cache/METHOD_LIST +1 -0
  492. data/resources/allison/cache/SRC_PAGE +1 -0
  493. data/resources/allison/cache/STYLE +323 -0
  494. data/resources/allison/cache/URL +1 -0
  495. data/scrubyt.gemspec +609 -0
  496. data/test/blackbox_test.rb +60 -0
  497. data/test/blackbox_tests/basic/multi_root.expected.xml +8 -0
  498. data/test/blackbox_tests/basic/multi_root.rb +6 -0
  499. data/test/blackbox_tests/basic/simple.expected.xml +5 -0
  500. data/test/blackbox_tests/basic/simple.rb +5 -0
  501. data/test/blackbox_tests/basic/three_divs.html +12 -0
  502. data/test/blackbox_tests/detail_page/detail_page_1.html +7 -0
  503. data/test/blackbox_tests/detail_page/detail_page_2.html +7 -0
  504. data/test/blackbox_tests/detail_page/main_page_1.html +5 -0
  505. data/test/blackbox_tests/detail_page/main_page_2.html +6 -0
  506. data/test/blackbox_tests/detail_page/one_detail_page.expected.xml +7 -0
  507. data/test/blackbox_tests/detail_page/one_detail_page.rb +9 -0
  508. data/test/blackbox_tests/detail_page/two_detail_pages.expected.xml +12 -0
  509. data/test/blackbox_tests/detail_page/two_detail_pages.rb +9 -0
  510. data/test/blackbox_tests/next_page/next_page_link.expected.xml +11 -0
  511. data/test/blackbox_tests/next_page/next_page_link.rb +7 -0
  512. data/test/blackbox_tests/next_page/page_1.html +11 -0
  513. data/test/blackbox_tests/next_page/page_2.html +11 -0
  514. data/test/blackbox_tests/next_page/page_3.html +7 -0
  515. data/test/blackbox_tests/next_page/page_list_links.expected.xml +11 -0
  516. data/test/blackbox_tests/next_page/page_list_links.rb +7 -0
  517. data/test/blackbox_tests/next_page/page_list_links.tofix +7 -0
  518. data/todo/backlog.txt +73 -0
  519. data/todo/scenario_ideas.txt +19 -0
  520. metadata +637 -0
@@ -0,0 +1,30 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../../../lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - Extracting some (specific) rows from a table
7
+ # - Using the :generalize option
8
+ # - Using the select_indices function
9
+ #
10
+ #Goal: Extract the first, 4th, 5th and last row from the input table
11
+ #
12
+ #Solution: Since by default only the root child(ren) of the extractor
13
+ # is/are generalized, and we need every <tr> (so we can select the ones we need)
14
+ # we have to set :generalize => true.
15
+ # Once we have all the indices, we select the relevant ones with the 'select_indices'
16
+ # function.
17
+
18
+ table_data = Scrubyt::Extractor.define do
19
+ #Perform the action(s)
20
+ fetch File.join(File.dirname(__FILE__), "input.html")
21
+ #Construct the wrapper
22
+ table do
23
+ row :generalize => true do
24
+ value('1', :generalize => true).select_indices([3..4, :first,:last])
25
+ end
26
+ end
27
+ end
28
+
29
+ table_data.to_xml.write($stdout, 1)
30
+ Scrubyt::ResultDumper.print_statistics(table_data)
@@ -0,0 +1,39 @@
1
+ <html>
2
+ <body>
3
+ <table border=1 padding=10>
4
+ <tr>
5
+ <td>1</td>
6
+ <td>2</td>
7
+ </tr>
8
+ <tr>
9
+ <td>3</td>
10
+ <td>4</td>
11
+ <td>5</td>
12
+ </tr>
13
+ </table>
14
+ <br/>
15
+ <table border=1 padding=10>
16
+ <tr>
17
+ <td>6</td>
18
+ </tr>
19
+ <tr>
20
+ <td>7</td>
21
+ </tr>
22
+ <tr>
23
+ <td>8</td>
24
+ </tr>
25
+ </table>
26
+ <br>
27
+ <table border=1 padding=10>
28
+ <tr>
29
+ <td>9</td>
30
+ <td>10</td>
31
+ </tr>
32
+ <tr>
33
+ </tr>
34
+ <tr>
35
+ <td>11</td>
36
+ </tr>
37
+ </table>
38
+ </body>
39
+ </html>
@@ -0,0 +1,35 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../../../lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - Extracting every td from a table
7
+ # - Using the :generalize option
8
+ #
9
+ #Goal: Extract every td from all tables on the page
10
+ #
11
+ #Solution: Since by default only the root child(ren) of the extractor
12
+ # is/are generalized, and we need every <td> in every <tr>, we
13
+ # need to generalize the patterns that extracted them, too.
14
+ # To achieve this, use the the :generalize option as shown below!
15
+ #
16
+
17
+ table_data = Scrubyt::Extractor.define do
18
+ #Perform the action(s)
19
+ fetch File.join(File.dirname(__FILE__), "input.html")
20
+ #Construct the wrapper
21
+ table do
22
+ row :generalize => true do
23
+ value '1', :generalize => true
24
+ end.ensure_presence_of_pattern('value')
25
+ end
26
+ end
27
+
28
+
29
+
30
+
31
+ table_data.to_xml.write($stdout, 1)
32
+ #puts table_data.table[1].row[0].value[0].to_text
33
+ Scrubyt::ResultDumper.print_statistics(table_data)
34
+
35
+ #table_data.export(__FILE__)
@@ -0,0 +1,38 @@
1
+ <html>
2
+ <body>
3
+ <table border=1 padding=10>
4
+ <tr>
5
+ <td>12</td>
6
+ <td>13</td>
7
+ <td>14</td>
8
+ <td>15</td>
9
+ </tr>
10
+ <tr>
11
+ <td>16</td>
12
+ </tr>
13
+ </table>
14
+ <br/>
15
+ <table border=1 padding=10>
16
+ <tr>
17
+ <td>17</td>
18
+ <td>18</td>
19
+ </tr>
20
+ <tr>
21
+ <td>19</td>
22
+ </tr>
23
+ </table>
24
+ <br>
25
+ <table border=1 padding=10>
26
+ <tr>
27
+ <td>20</td>
28
+ <td>21</td>
29
+ </tr>
30
+ <tr>
31
+ </tr>
32
+ <tr>
33
+ <td>22</td>
34
+ </tr>
35
+ </table>
36
+ <a href='3.html'>Next</a>
37
+ </body>
38
+ </html>
@@ -0,0 +1,33 @@
1
+ <html>
2
+ <body>
3
+ <table border=1 padding=10>
4
+ <tr>
5
+ <td>23</td>
6
+ <td>24</td>
7
+ <td>25</td>
8
+ </tr>
9
+ </table>
10
+ <br/>
11
+ <table border=1 padding=10>
12
+ <tr>
13
+ <td>26</td>
14
+ </tr>
15
+ <tr>
16
+ <td>27</td>
17
+ <td>28</td>
18
+ </tr>
19
+ </table>
20
+ <br>
21
+ <table border=1 padding=10>
22
+ <tr>
23
+ <td>29</td>
24
+ <td>30</td>
25
+ </tr>
26
+ <tr>
27
+ </tr>
28
+ <tr>
29
+ <td>31</td>
30
+ </tr>
31
+ </table>
32
+ </body>
33
+ </html>
@@ -0,0 +1,40 @@
1
+ <html>
2
+ <body>
3
+ <table border=1 padding=10>
4
+ <tr>
5
+ <td>1</td>
6
+ <td>2</td>
7
+ </tr>
8
+ <tr>
9
+ <td>3</td>
10
+ <td>4</td>
11
+ <td>5</td>
12
+ </tr>
13
+ </table>
14
+ <br/>
15
+ <table border=1 padding=10>
16
+ <tr>
17
+ <td>6</td>
18
+ </tr>
19
+ <tr>
20
+ <td>7</td>
21
+ </tr>
22
+ <tr>
23
+ <td>8</td>
24
+ </tr>
25
+ </table>
26
+ <br>
27
+ <table border=1 padding=10>
28
+ <tr>
29
+ <td>9</td>
30
+ <td>10</td>
31
+ </tr>
32
+ <tr>
33
+ </tr>
34
+ <tr>
35
+ <td>11</td>
36
+ </tr>
37
+ </table>
38
+ <a href='2.html'>Next</a>
39
+ </body>
40
+ </html>
@@ -0,0 +1,32 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../../../lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - Extracting every td from a table
7
+ # - Using the :generalize option
8
+ # - Crawling to 2 next pages
9
+ #
10
+ #Goal: Extract every td from every table on the page, and also from
11
+ # 2 other pages linked to this document by a 'next' link
12
+ #
13
+ #Solution: This example is very similar to the 'plain_table' one (so I will
14
+ # not describe what's going on there once more) with one exception -
15
+ # crawling to the next 2 pages. This is achieved by the 'next_page'
16
+ # idiom.
17
+ #
18
+
19
+ ambigous_data = Scrubyt::Extractor.define do
20
+ #Perform the action(s)
21
+ fetch File.join(File.dirname(__FILE__), "input.html")
22
+ #Construct the wrapper
23
+ table do
24
+ row :generalize => true do
25
+ value '1', :generalize => true
26
+ end
27
+ end
28
+ next_page "Next"
29
+ end
30
+
31
+ ambigous_data.to_xml.write($stdout, 1)
32
+
@@ -0,0 +1,40 @@
1
+ <html>
2
+ <body>
3
+ <table border=1 padding=10>
4
+ <tr>
5
+ <td>12</td>
6
+ <td>13</td>
7
+ <td>14</td>
8
+ <td>15</td>
9
+ </tr>
10
+ <tr>
11
+ <td>16</td>
12
+ </tr>
13
+ </table>
14
+ <br/>
15
+ <table border=1 padding=10>
16
+ <tr>
17
+ <td>17</td>
18
+ <td>18</td>
19
+ </tr>
20
+ <tr>
21
+ <td>19</td>
22
+ </tr>
23
+ </table>
24
+ <br>
25
+ <table border=1 padding=10>
26
+ <tr>
27
+ <td>20</td>
28
+ <td>21</td>
29
+ </tr>
30
+ <tr>
31
+ </tr>
32
+ <tr>
33
+ <td>22</td>
34
+ </tr>
35
+ </table>
36
+ <br/>
37
+ <br/>
38
+ <a href='1.html'>1</a> 2 <a href='3.html'>3</a> <a href='3.html'><img src='images/right_arrow.png' alt='a nice right arrow' style='border :0px'/></a>
39
+ </body>
40
+ </html>
@@ -0,0 +1,33 @@
1
+ <html>
2
+ <body>
3
+ <table border=1 padding=10>
4
+ <tr>
5
+ <td>23</td>
6
+ <td>24</td>
7
+ <td>25</td>
8
+ </tr>
9
+ </table>
10
+ <br/>
11
+ <table border=1 padding=10>
12
+ <tr>
13
+ <td>26</td>
14
+ </tr>
15
+ <tr>
16
+ <td>27</td>
17
+ <td>28</td>
18
+ </tr>
19
+ </table>
20
+ <br>
21
+ <table border=1 padding=10>
22
+ <tr>
23
+ <td>29</td>
24
+ <td>30</td>
25
+ </tr>
26
+ <tr>
27
+ </tr>
28
+ <tr>
29
+ <td>31</td>
30
+ </tr>
31
+ </table>
32
+ </body>
33
+ </html>
@@ -0,0 +1,42 @@
1
+ <html>
2
+ <body>
3
+ <table border=1 padding=10>
4
+ <tr>
5
+ <td>1</td>
6
+ <td>2</td>
7
+ </tr>
8
+ <tr>
9
+ <td>3</td>
10
+ <td>4</td>
11
+ <td>5</td>
12
+ </tr>
13
+ </table>
14
+ <br/>
15
+ <table border=1 padding=10>
16
+ <tr>
17
+ <td>6</td>
18
+ </tr>
19
+ <tr>
20
+ <td>7</td>
21
+ </tr>
22
+ <tr>
23
+ <td>8</td>
24
+ </tr>
25
+ </table>
26
+ <br>
27
+ <table border=1 padding=10>
28
+ <tr>
29
+ <td>9</td>
30
+ <td>10</td>
31
+ </tr>
32
+ <tr>
33
+ </tr>
34
+ <tr>
35
+ <td>11</td>
36
+ </tr>
37
+ </table>
38
+ <br/>
39
+ <br/>
40
+ 1 <a href='2.html'>2</a> <a href='3.html'>3</a> <a href='2.html'><img src='images/right_arrow.png' alt='a nice right arrow' style='border :0px'/></a>
41
+ </body>
42
+ </html>
@@ -0,0 +1,32 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../../../lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - Extracting every td from a table
7
+ # - Using the :generalize option
8
+ # - Crawling to 2 next pages
9
+ #
10
+ #Goal: Extract every td from every table on the page, and also from
11
+ # 2 other pages linked to this document by a 'next' link
12
+ #
13
+ #Solution: This example is very similar to the 'plain_table' one (so I will
14
+ # not describe what's going on there once more) with one exception -
15
+ # crawling to the next 2 pages. This is achieved by the 'next_page'
16
+ # idiom.
17
+ #
18
+
19
+ ambigous_data = Scrubyt::Extractor.define do
20
+ #Perform the action(s)
21
+ fetch File.join(File.dirname(__FILE__), "input.html")
22
+ #Construct the wrapper
23
+ table do
24
+ row :generalize => true do
25
+ value '1', :generalize => true
26
+ end
27
+ end
28
+ next_page "images/right_arrow.png"
29
+ end
30
+
31
+ ambigous_data.to_xml.write($stdout, 1)
32
+
@@ -0,0 +1,46 @@
1
+ <html>
2
+ <body>
3
+ <div>
4
+ <table>
5
+ <tr>
6
+ <td>
7
+ item 1/1
8
+ </td>
9
+ <td>
10
+ good item 1/2
11
+ </td>
12
+ <td>
13
+ crap
14
+ </td>
15
+ <td>
16
+ item 2/1
17
+ </td>
18
+ <td>
19
+ good item 2/2
20
+ </td>
21
+ <td>
22
+ crap
23
+ </td>
24
+ <td>
25
+ item 3/1
26
+ </td>
27
+ <td>
28
+ good item 3/2
29
+ </td>
30
+ <td>
31
+ crap
32
+ </td>
33
+ <td>
34
+ item 4/1
35
+ </td>
36
+ <td>
37
+ good item 4/2
38
+ </td>
39
+ <td>
40
+ crap
41
+ </td>
42
+ </tr>
43
+ </table>
44
+ </div>
45
+ </body>
46
+ </html>
@@ -0,0 +1,55 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../../../lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - Extracting every td from a table
7
+ # - Using the :generalize option
8
+ #
9
+ #Goal: Extract every td from all tables on the page
10
+ #
11
+ #Solution: Since by default only the root child(ren) of the extractor
12
+ # is/are generalized, and we need every <td> in every <tr>, we
13
+ # need to generalize the patterns that extracted them, too.
14
+ # To achieve this, use the the :generalize option as shown below!
15
+ #
16
+
17
+ table_data = Scrubyt::Extractor.define do
18
+ #Perform the action(s)
19
+ fetch File.join(File.dirname(__FILE__), "input.html")
20
+ #Construct the wrapper
21
+ row do
22
+ (item 'item 1/1', :generalize => true).select_indices(:every_third)
23
+ (link 'good item 1/2', :generalize => true).select_indices(:every_fourth)
24
+ end
25
+ end
26
+
27
+
28
+
29
+
30
+ table_data.to_xml.write($stdout, 1)
31
+ #puts table_data.table[1].row[0].value[0].to_text
32
+ Scrubyt::ResultDumper.print_statistics(table_data)
33
+
34
+ #table_data.export(__FILE__)
35
+
36
+ =begin
37
+ <root>
38
+ <row>
39
+ <item>item 1/1</item>
40
+ <item>item 2/1</item>
41
+ <item>item 3/1</item>
42
+ <item>item 4/1</item>
43
+ </row>
44
+ </root>
45
+
46
+ <root>
47
+ <row>
48
+ <link>item 1/1</link>
49
+ <link>good item 2/2</link>
50
+ <link>crap</link>
51
+ </row>
52
+ </root>
53
+ =end
54
+
55
+
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <body>
3
+ <div>
4
+ <table>
5
+ <tr>
6
+ <td>Child</td>
7
+ </tr>
8
+ <tr>
9
+ <td>Parent</td>
10
+ </tr>
11
+ </table>
12
+ <strong>test</strong>
13
+ </div>
14
+ </body>
15
+ </html>
@@ -0,0 +1,18 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../../lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ extractor = Scrubyt::Extractor.define do
6
+ fetch File.join(File.dirname(__FILE__), "input.html")
7
+
8
+ root '//table' do
9
+ parent '/tr[2]', :generalize=>false do
10
+ name '/td'
11
+ child '../tr[1]', :example_type=>:xpath, :generalize=>false, :type=>:tree do
12
+ name './td'
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ extractor.to_xml.write($stdout, 1)
@@ -0,0 +1,26 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../../lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - scraping stock values from finance.yahoo.com
7
+ #
8
+ #Goal: from finance.yahoo.com. Scrape the actual values found there
9
+ # for the stock information available.
10
+ #Solution: Nothing special here. The examples are defined, and
11
+ # the ensure_presence_of_pattern constraint is used to filter out
12
+ # stockinfos that do not have a value specified.
13
+
14
+ stock_data = Scrubyt::Extractor.define do
15
+ #Perform the action(s)
16
+ fetch 'http://finance.yahoo.com/'
17
+ #Construct the wrapper
18
+ stockinfo do
19
+ symbol 'Dow'
20
+ value '15.54'
21
+ end.ensure_presence_of_pattern('value')
22
+ end
23
+
24
+
25
+ stock_data.to_xml.write($stdout, 1)
26
+ Scrubyt::ResultDumper.print_statistics(stock_data)
@@ -0,0 +1,27 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../..//lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - filling and submitting a textfield
7
+ # - filling a text area
8
+ # - submitting the form
9
+ #
10
+ #Goal: Automatically sending a comment to a wordpress blog
11
+ #Solution: After fetching the page, fill the 'author' and 'email' textfields,
12
+ # then enter your comment to the 'comment' textarea and submit the form.
13
+ # This example does not use a scraper - it's an example of an extractor
14
+ # which uses just navigation to accomplish the goal.
15
+ # Please don't run this too much (or change the name,email and comment
16
+ # to something menaningful) - I would not like to have a horde of comments
17
+ # from Bruce Lee :-)
18
+ #
19
+ #Credit: Zaheed Haque
20
+
21
+ post_comment = Scrubyt::Extractor.define do
22
+ fetch 'http://scrubyt.org/your-first-extractor/'
23
+ fill_textfield 'author', 'Bruce Lee'
24
+ fill_textfield 'email', 'bruce@kung-foo.com'
25
+ fill_textarea 'comment', 'Yet another test comment from Bruce!'
26
+ submit
27
+ end
@@ -0,0 +1,22 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../..//lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Will comment later
6
+
7
+ del_icio_us_data = Scrubyt::Extractor.define do
8
+ fetch "http://del.icio.us/search/?p=ruby"
9
+
10
+ item do
11
+ title 'Why’s (Poignant) Guide to Ruby'
12
+ title_url 'Why’s (Poignant) Guide to Ruby' do
13
+ url 'href', :type => :attribute
14
+ end
15
+ bookmarks 'saved by 6687 people', :generalize => true do
16
+ votes /\d+/
17
+ end.select_indices(:all_but_last)
18
+ end
19
+ end
20
+
21
+ del_icio_us_data.to_xml.write($stdout, 1)
22
+ del_icio_us_data.export(__FILE__)
@@ -0,0 +1,37 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '../../..//lib')
2
+
3
+ require 'scrubyt'
4
+
5
+ #Example of:
6
+ # - Scraping a digg page; otherwise nothing special
7
+ #
8
+ #Goal: Extract every main item contained on the front page - an item
9
+ # should containt the title and the number of diggs.
10
+ #
11
+ #Solution: Well, nothing special - this could even be a 'Hello, world!'
12
+ # type of example. However, it is far from that - since digg
13
+ # is changing so fast that it is practically impossible to
14
+ # capture an example before it gets at least one more digg on
15
+ # the frontpage. Solution: go to the 10th or so page, and select
16
+ # an example there (with the lowest possible digg, since that lowers
17
+ # the risk of being digged up even more) and export the stuff immediately
18
+ # then use the production extractor.
19
+ # !!! NOTE !!! to run this example, you will need to change the example!
20
+ # it is totally impossible that there is something on the frontpage with 1 diggs!
21
+
22
+ digg_data = Scrubyt::Extractor.define do
23
+ fetch 'http://digg.com/'
24
+ fill_textfield 's', 'ruby'
25
+ submit
26
+
27
+ item do
28
+ title "Free Dog Training Tips"
29
+ diggs "1"
30
+ end
31
+ end
32
+
33
+ digg_data.to_xml.write($stdout, 1)
34
+ Scrubyt::ResultDumper.print_statistics(digg_data)
35
+ digg_data.export(__FILE__)
36
+
37
+