instagram_scraper 0.1.1 → 0.2.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/instagram_scraper.rb +38 -13
  3. metadata +31 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c31ebbe8e95287e5f6ed4c5f696df2bf2f441734
4
- data.tar.gz: 08c2dd27b91aeeb08714f6cd2fe93d264d58f616
3
+ metadata.gz: 3671326d193735c6a72b39b2841b64815f39f9a2
4
+ data.tar.gz: c07bf5cdc92b101f5e1b812b990b9bba36b335a8
5
5
  SHA512:
6
- metadata.gz: da574ddd670a9eae8f759c80b86bcff82a4e4b01a00ca09dff726f39f375aad203226a7da8e888e46092b65c029376863c0296f941901f60f65bd226e7509ba4
7
- data.tar.gz: 087c8415f7a9576ea39ab3ffb3b477eba15ff4081048d6f0fc36bcfa4212fa196800c79bdb3dfb8c234bd3685f2b0890c6db36c57975579cbeed620ce6cf4473
6
+ metadata.gz: 78870b7b1527b31f3ea55a7324a6fe875621e63cf33fc877c937dca38c2160cf511cc5fd4dd711130a93f9047947990c5235145486395d341ddabe136924ec62
7
+ data.tar.gz: b2387a74534ddf063311960fc9a28182431aba445ec56c32b0391d33ec87cd611bfa1611002b8c129ed3b604e372d2ce91770c6708caf816ee4013f3e296464a
@@ -1,21 +1,12 @@
1
1
  class InstagramScraper
2
2
  #code
3
- def self.get_user_basic_json(name)
4
- info_json = load_json("https://www.instagram.com/web/search/topsearch/?query=#{name}")
5
- info_json['users'].find { |e| e['user']['username'] == name }['user']
6
- end
7
-
8
- def self.load_json(url)
9
- #code
10
- JSON.load(open(url))
11
- end
12
3
 
13
- def self.load_media_json(name)
14
- #code
15
- media_json = load_json("https://www.instagram.com/#{name}/media")
4
+ def initialize(username, password)
5
+ @username = username
6
+ @password = password
16
7
  end
17
8
 
18
- def self.get(name)
9
+ def get(name)
19
10
  basic_json = get_user_basic_json name
20
11
  media_json = load_media_json name
21
12
  @user = InstagramUser.new
@@ -26,7 +17,41 @@ class InstagramScraper
26
17
  @user.media_json = media_json
27
18
  @user
28
19
  end
20
+
21
+ private
22
+ def load_media_json(name)
23
+ url = "https://www.instagram.com/#{name}/media"
24
+ b = login_instagram @username, @password
25
+ b.goto url
26
+ html_doc = Nokogiri::HTML(b.html)
27
+ json = html_doc.css('pre').first.content
28
+ JSON.load(json)
29
+ end
30
+
31
+ def login_instagram(username, password)
32
+ browser = Watir::Browser.new
33
+ browser.goto "https://www.instagram.com/accounts/login/"
34
+ browser.text_field(css: 'div._ccek6:nth-child(1) > input:nth-child(1)').when_present.set(username)
35
+ browser.text_field(css: 'div._ccek6:nth-child(2) > input:nth-child(1)').when_present.set(password)
36
+ browser.button(css: '._rz1lq').click
37
+ browser.div(css: '._l09h7').wait_until_present
38
+ browser
39
+ end
40
+
41
+ def get_user_basic_json(name)
42
+ info_json = load_json("https://www.instagram.com/web/search/topsearch/?query=#{name}")
43
+ info_json['users'].find { |e| e['user']['username'] == name }['user']
44
+ end
45
+
46
+ def load_json(url)
47
+ #code
48
+ # JSON.load(open(url))
49
+ uri = URI.parse(url)
50
+ JSON.load(uri.open)
51
+ end
29
52
  end
30
53
 
54
+ require 'nokogiri'
55
+ require "watir"
31
56
  require 'open-uri'
32
57
  require "json"
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: instagram_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - samwalker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-04 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2016-02-05 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: :runtime
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: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  description: A instagram scraper to get user instagram data thought public api (search
14
42
  and media)
15
43
  email: samwalker505@gmail.com