getter_cyndi5 0.0.0

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.
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: []