;; ============================== ;; Script: raging-bull.r ;; downloaded from: www.REBOL.org ;; on: 28-Mar-2024 ;; at: 20:35:29.77575 UTC ;; ;; ============================== REBOL [ Title: "Raging Bull page downloader" Date: 16-Sep-1999 File: %raging-bull.r Author: "Jim Goodnow II" Purpose: { This script reads sequential pages from the Raging-Bull on-line bulletin board. } Note: { It parses the HTML page looking for the author and the text of the message. It then appends that information to an HTML page that is created. The idea is to allow much quicker scanning of the new posts to the bulletin board without having to hit click on the NEXT button and wait for each page to load. The last number read is saved in a text file that is loaded before reading pages and then written at the end. } library: [ level: 'advanced platform: none type: [tool tutorial] domain: [web markup text-processing] tested-under: none support: none license: none see-also: none ] ] secure none ; load the next message number to read ; if not found, start at one and only read 10 messages, else read up to 50 either error? start: try [ load %amazon.txt ][ start: 1 max-msg: start + 10 ] [ max-msg: start + 50 ] ; modify the AMZN below to the particular stock board you are interested in addr: http://www.ragingbull.com/mboard/boards.cgi?board=AMZN&read= f: open/new %amazon.html ; this is where the output will go append f "^/" whos: copy [] txts: copy [] while [ true ] [ a: rejoin [ addr start ] print [ "reading" a ] ; if we get an error reading, just stop if error? try [ page: read a ][ break ] ; or if the parse fails, stop in case it's a page not found result ; So, the following skips over all the HTML till the ">By:" is found. ; Skips to the next HTML tag, copys the name to the WHO variable. ; Then it skips to the next TABLE tag and copys thru the end of the ; table to the TXT variable. Then it skips to the end. if not parse page [to ">By:" to "<" "<" thru ">" copy who to "<" to "" to end ][ break ] ; display the message number followed by the author, followed by the ; message itself append f reduce [ start " By: " who "
" txt "
" ] ; bump the message number and if at max, stop start: start + 1 if start = max-msg [ break ] ] ; save the new starting message number save %amazon.txt start ; close out the document append f "^/" close f quit