restaurantscrapper 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/RestaurantScrapper.rb +73 -0
  3. metadata +70 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: af06c7167792f8902d3ef17e77e588d92f83be34c79e7a486dde04d8fb1c9df6
4
+ data.tar.gz: ae2283bd7264015d965dba9c535e8fff5e53c509258c942c513207657306ac22
5
+ SHA512:
6
+ metadata.gz: 643fe459e3b403c3b757c0591db9b999e483b65fa533978f2d12cdd6d98bde1673cf159e4a56d4e63bdb545ef132dfce910ed9db1627ff513bead7688e6e5b34
7
+ data.tar.gz: 1a368e6b15b072f4dfda9e2c1481394cb2549c24e014cd77077840a66e484d570707bd251e1e14231351036dd8c8096440c3038abbc96bf402898e4c2dfda3e8
@@ -0,0 +1,73 @@
1
+ require 'nokogiri'
2
+ require 'watir'
3
+
4
+ class RestaurantScrapper
5
+
6
+ def self.scrape(value)
7
+
8
+ outputArray = []
9
+
10
+ args = %w[--disable-infobars --headless window-size=1600,1200 --no-sandbox --disable-gpu --disable-dev-shm-usage]
11
+ options = {
12
+ binary: ENV['GOOGLE_CHROME_BIN'],
13
+ prefs: { password_manager_enable: false, credentials_enable_service: false },
14
+ args: args
15
+ }
16
+
17
+ browser = Watir::Browser.new(:chrome, options: options)
18
+ browser.goto value
19
+ doc = Nokogiri::HTML.parse(browser.html)
20
+
21
+ #taking all the hotels list in HTML
22
+ restaurant_list_snippets = doc.css('div.restaurants-list-ListCell__cellContainer--2mpJS')
23
+
24
+ #iterating over each hotel
25
+ restaurant_list_snippets.each do |restaurant_elements|
26
+
27
+ restaurantname_element = restaurant_elements.search('div.restaurants-list-ListCell__nameBlock--1hL7F')
28
+ restaurant_name = restaurantname_element.search('a.restaurants-list-ListCell__restaurantName--2aSdo').text
29
+
30
+ type_element1 = restaurant_elements.search('div.restaurants-list-ListCell__infoRow--31xBt.restaurants-list-ListCell__hideLeftDivider--3vXbe.restaurants-list-ListCell__cuisinePriceMenu--r4-Re')
31
+ type_element2 = type_element1.search('span.restaurants-list-ListCell__infoCell--1Fz8a')
32
+
33
+ restaurant_type = type_element2.search('span.restaurants-list-ListCell__infoRowElement--2E6E3').text
34
+
35
+ if restaurant_name
36
+
37
+ restaurant_name=restaurant_name.split(". ", 2)
38
+ name = restaurant_name[1]
39
+
40
+ end
41
+
42
+ if restaurant_type
43
+ restaurant_type=restaurant_type.gsub("\u20AC","money")
44
+ restaurant_type=restaurant_type.split("money", 2)
45
+ restaurant_type[1]= "money#{restaurant_type[1]}"
46
+ restaurant_range=restaurant_type[1].split("-")
47
+ if(restaurant_range.size>1)
48
+ fromrange=restaurant_range[0].scan(/(?=money)/).count
49
+ torange= restaurant_range[1].scan(/(?=money)/).count
50
+ range="#{fromrange}-#{torange}"
51
+ else
52
+ range =restaurant_range[0].scan(/(?=money)/).count
53
+ range="#{range}"
54
+ end
55
+ end
56
+
57
+ #new Hash is created and all the values are pushed into the hash map
58
+ output = Hash.new
59
+ output.store("name", name)
60
+ output.store("type", restaurant_type[0])
61
+ output.store("range", range)
62
+
63
+
64
+ #pushing to array
65
+ outputArray.push(output)
66
+
67
+ end
68
+ #returning array
69
+ return outputArray
70
+
71
+ end
72
+
73
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: restaurantscrapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Niranjan Karunanithi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-11-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: watir
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Scraps the restaurant data
42
+ email: niranjankarunanidhi@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/RestaurantScrapper.rb
48
+ homepage: http://rubygems.org/gems/restaurantscrapper
49
+ licenses: []
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements: []
66
+ rubygems_version: 3.0.3
67
+ signing_key:
68
+ specification_version: 4
69
+ summary: Scraps the restaurant data
70
+ test_files: []