Quick Query for FINRA BrokerCheck

The task was to generate a listing of active FINRA registrants for a particular FI form FINRAs BrokerCheck website and once again some Ruby script with a Watir and Nokogiri Gem was the goto.

 

require 'nokogiri'
require 'rubygems'
require 'watir-webdriver'
rows = Array.new
dupes = Array.new
### Defines Array Class for HTML Table output ###
class Array 
 def to_cells(tag)
 self.map { |c| "<#{tag}>#{c}</#{tag}>" }.join
 end
end

browser = Watir::Browser.new :chrome
browser.goto 'http://brokercheck.finra.org/Search/Search.aspx'
[*('A'..'Z')].each do |letter|

browser.text_field(:name => 'ctl00$phContent$ucUnifiedSearch$txtIndvl').set "#{letter}" + "*"

browser.text_field(:name => 'ctl00$phContent$ucUnifiedSearch$txtFirm').set 'BMO'

browser.input(:name => 'ctl00$phContent$ucUnifiedSearch$lbtnFreeFormSearch').click
loop do
table_Rows = browser.table(:id 

Köp Kamagra Receptfritt

, 'ctl00_phContent_gvBrokerTable').rows.length
for i in 0..table_Rows.to_i-1 

 doc = Nokogiri::HTML.parse(browser.html)

 name = browser.table(:id  , 'ctl00_phContent_gvBrokerTable')[i][0].div(:class, 'gvListItemStyle').span.text
 lic_status = browser.table(:id, 'ctl00_phContent_gvBrokerTable')[i][1].text
 status = browser.table(:id, 'ctl00_phContent_gvBrokerTable')[i][0].div(:class, 'gvListItemStyle').text

 if lic_status.to_s =~ /Not Licensed/
elsif status.to_s =~ /BMO/

 source = doc.css('.GrayTextShade:nth-child(3)')[i].text

 if dupes.include?(name)
 else
 puts "#{name}\t#{source}"
 rows << {"Name" => name, "Registration" => source}
 dupes << name
 end
end
end
 if browser.link(:id =>'ctl00_phContent_navPager_lbNext').exists?
browser.link(:id =>'ctl00_phContent_navPager_lbNext').click

 else

 browser.goto 'http://brokercheck.finra.org/Search/Search.aspx'
 break
end
end
end
### Rolls HTML Table output ###
headers = "<tr>#{rows[0].keys.to_cells('th')}</tr>"
cells = rows.map do |row|
 "<tr>#{row.values.to_cells('td')}</tr>"
end.join("\n ")
table = "<table border=\"1\">
 #{headers}
 #{cells}
</table>"
puts table

 

Leave a Reply

Your email address will not be published. Required fields are marked *