getter_cyndi5 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0261a7cc5ac7b72633634fc3ebb15ebe8d813dc3eda78406badb343f57bd19f2
4
+ data.tar.gz: ec5d527e1bcc161e20b6707648b38db740655869eb99c061661b5836f9037921
5
+ SHA512:
6
+ metadata.gz: 2620c48d2a9da1693d4bfb16635f108e42fda8558431b1b395273809359ed87696543d052fa652715775fa992b369d374f94f5cbefcba9ee0e0ebeb6f7920598
7
+ data.tar.gz: e01621b25e31263a700885fa58659ab61dc36ddbf71a8b003786a72e657748c588efa65c00c1201516acc67ec02beb32c538769f4f956d0478e5470f15fe04e9
data/bin/getter_cyndi5 ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'getter_cyndi5'
4
+ GetterCyndi5.go(ARGV[0], ARGV[1], ARGV[2], ARGV[3], ARGV[4].to_i, ARGV[5])
@@ -0,0 +1,24 @@
1
+ # The main GetterCyndi5 driver
2
+ class GetterCyndi5
3
+ # Getter
4
+ #
5
+ # Example:
6
+ # >> GetterCyndi5.go(base_url = 'https://thehappyco.com', products_page_path = '/kelly/products', item_row_selector = '.item-row', item_anchor_selector = 'div > div.product-desc.text-center > div.product-title > h3 > a', mode = 0, './tmp/document.html')
7
+ # Arguments:
8
+ # base_url: (String)
9
+ # products_page_path: (String)
10
+ # item_row_selector: (String)
11
+ # item_anchor_selector: (String)
12
+ # mode: (Integer)
13
+ # filename: (String)
14
+
15
+ def self.go(base_url = 'https://thehappyco.com', products_page_path = '/kelly/products', item_row_selector = '.item-row', item_anchor_selector = 'div > div.product-desc.text-center > div.product-title > h3 > a', mode = 1, filename = './tmp/document.html')
16
+ retriever = Retriever.new(base_url, products_page_path, item_row_selector, mode, filename)
17
+ retriever.retrieve
18
+ parser = Parser.new(retriever.document, base_url, item_row_selector, item_anchor_selector)
19
+ parser.parse
20
+ end
21
+ end
22
+
23
+ require 'getter_cyndi5/retriever'
24
+ require 'getter_cyndi5/parser'
@@ -0,0 +1,19 @@
1
+ class GetterCyndi5::Parser
2
+ def initialize(document, base_url, item_row_selector, item_anchor_selector)
3
+ @document = document
4
+ @base_url = base_url
5
+ @item_row_selector = item_row_selector
6
+ @item_anchor_selector = item_anchor_selector
7
+ end
8
+
9
+ def parse
10
+ item_rows = @document.css(@item_row_selector)
11
+ item_rows.each do |item_row|
12
+ product_element = item_row.css(@item_anchor_selector)[0]
13
+ product_name = product_element.text
14
+ product_url = "#{@base_url}#{product_element.attributes['href']}"
15
+ puts "#{product_name} #{product_url}"
16
+ puts "-----"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ require 'httparty'
2
+ require 'nokogiri'
3
+ require 'watir'
4
+ require 'webdrivers'
5
+
6
+ class GetterCyndi5::Retriever
7
+ def initialize(base_url, products_page_path, item_row_selector, mode, filename)
8
+ @base_url = base_url
9
+ @products_page_path = products_page_path
10
+ @products_page_url = "#{@base_url}#{@products_page_path}"
11
+ @item_row_selector = item_row_selector
12
+ @mode = mode
13
+ @filename = filename
14
+ end
15
+
16
+ def retrieve()
17
+ if @mode == 0 || @mode == 1
18
+ browser = Watir::Browser.new
19
+ browser.goto(@products_page_url)
20
+ item_row_elements = browser.elements(css: @item_row_selector)
21
+ end
22
+ if @mode == 1
23
+ File.write(@filename, browser.html)
24
+ end
25
+ if @mode == 0
26
+ @document = Nokogiri::HTML(browser.html)
27
+ end
28
+ if @mode == 1 || @mode == 2
29
+ @document = File.open(@filename) { |f| Nokogiri::HTML(f) }
30
+ end
31
+ end
32
+
33
+ def document
34
+ @document
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: getter_cyndi5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Cyndi Cavanaugh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-03-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple getter cyndi5 gem
14
+ email: cynthiacavanaugh1@gmail.com
15
+ executables:
16
+ - getter_cyndi5
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/getter_cyndi5
21
+ - lib/getter_cyndi5.rb
22
+ - lib/getter_cyndi5/parser.rb
23
+ - lib/getter_cyndi5/retriever.rb
24
+ homepage: https://cyndicavanaugh.com
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubygems_version: 3.1.4
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: getter Cyndi5!
47
+ test_files: []