craigslister 2.1.1 → 3.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 +4 -4
- data/lib/craigslister/craigslister.rb +8 -12
- data/lib/craigslister/{scraper.rb → link_scraper.rb} +4 -4
- data/lib/craigslister/post_scraper.rb +13 -9
- data/lib/craigslister.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f87dfc804af5cf58d208043c69c9ac1e7330f95
|
4
|
+
data.tar.gz: 4f35f504ba5936bf0676a534c5b3967214fa97ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0327eadd2ea042cddf14ac6ba6de2e7c776eab2a218664e0632f0e68d3cbf173e9f9b1dca022c1518e73d5717ba2fa7f4afd82705449249db7362c5ee41298af
|
7
|
+
data.tar.gz: b6ed756491d417895492ec9b65b2c13783dece0d0ba7a2988af887e9f6891c88a617df83822603206e2a4bc2e8dfd0c45620237cd359441a4d96a96bbcd528d4
|
@@ -14,12 +14,8 @@ class Craigslister
|
|
14
14
|
validate_price_range
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
def links
|
22
|
-
scraper.links
|
17
|
+
def posts
|
18
|
+
LinkScraper.new(url, base_url).posts
|
23
19
|
end
|
24
20
|
|
25
21
|
def url
|
@@ -30,10 +26,6 @@ class Craigslister
|
|
30
26
|
|
31
27
|
private
|
32
28
|
|
33
|
-
def scraper
|
34
|
-
Scraper.new(url, base_url)
|
35
|
-
end
|
36
|
-
|
37
29
|
def base_url
|
38
30
|
"https://#{area}.craigslist.org"
|
39
31
|
end
|
@@ -46,7 +38,11 @@ class Craigslister
|
|
46
38
|
end
|
47
39
|
|
48
40
|
def validate_price_range
|
49
|
-
|
50
|
-
|
41
|
+
fail(InvalidRangeError,
|
42
|
+
'Price range is invalid.') if price_invalid?
|
43
|
+
end
|
44
|
+
|
45
|
+
def price_invalid?
|
46
|
+
low && high && low > high
|
51
47
|
end
|
52
48
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
class
|
1
|
+
# Scrapes links and feeds them to PostScraper
|
2
|
+
class LinkScraper
|
3
3
|
def initialize(url, base_url)
|
4
4
|
@url = url
|
5
5
|
@base_url = base_url
|
@@ -9,7 +9,7 @@ class Scraper
|
|
9
9
|
header_link.map { |link| format_link(link['href']) }
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def posts
|
13
13
|
links.flat_map { |link| post_from(link) }
|
14
14
|
end
|
15
15
|
|
@@ -30,7 +30,7 @@ class Scraper
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def format_link(link)
|
33
|
-
if link
|
33
|
+
if link.match(/\w+\.craig/)
|
34
34
|
'https:' + link
|
35
35
|
else
|
36
36
|
base_url + link
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Scrapes craigslist posts and packages data in Post objects
|
2
2
|
class PostScraper
|
3
3
|
def initialize(page, link)
|
4
4
|
@page = page
|
@@ -6,14 +6,7 @@ class PostScraper
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def new_post
|
9
|
-
Post.new(
|
10
|
-
image: image,
|
11
|
-
title: title,
|
12
|
-
price: price,
|
13
|
-
location: location,
|
14
|
-
description: description,
|
15
|
-
url: link
|
16
|
-
)
|
9
|
+
Post.new(post_params)
|
17
10
|
end
|
18
11
|
|
19
12
|
private
|
@@ -24,6 +17,17 @@ class PostScraper
|
|
24
17
|
page.at('span.postingtitletext')
|
25
18
|
end
|
26
19
|
|
20
|
+
def post_params
|
21
|
+
{
|
22
|
+
image: image,
|
23
|
+
title: title,
|
24
|
+
price: price,
|
25
|
+
location: location,
|
26
|
+
description: description,
|
27
|
+
url: link
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
27
31
|
def image
|
28
32
|
image = page.at('img')
|
29
33
|
image ? image['src'] : ''
|
data/lib/craigslister.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: craigslister
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Scott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '1.6'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.6.
|
22
|
+
version: 1.6.7.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '1.6'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.6.
|
32
|
+
version: 1.6.7.1
|
33
33
|
description: all you need is an item title and you can scrape posts from craigslist
|
34
34
|
email: christo247@gmail.com
|
35
35
|
executables: []
|
@@ -38,9 +38,9 @@ extra_rdoc_files: []
|
|
38
38
|
files:
|
39
39
|
- lib/craigslister.rb
|
40
40
|
- lib/craigslister/craigslister.rb
|
41
|
+
- lib/craigslister/link_scraper.rb
|
41
42
|
- lib/craigslister/post.rb
|
42
43
|
- lib/craigslister/post_scraper.rb
|
43
|
-
- lib/craigslister/scraper.rb
|
44
44
|
homepage: https://github.com/Yago580/craigslister
|
45
45
|
licenses:
|
46
46
|
- MIT
|