scrapers 2.1.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/ChangeLog +7 -0
- data/Gemfile +0 -8
- data/Guardfile +1 -1
- data/bin/rubytapas +2 -75
- data/lib/scrapers.rb +1 -3
- data/lib/scrapers/manning_books.rb +37 -27
- data/lib/scrapers/rubytapas.rb +6 -81
- data/lib/scrapers/rubytapas/cli.rb +39 -0
- data/lib/scrapers/rubytapas/config.rb +11 -0
- data/lib/scrapers/rubytapas/dpdcart.rb +115 -0
- data/lib/scrapers/rubytapas/episode.rb +86 -0
- data/lib/scrapers/rubytapas/scraper.rb +142 -0
- data/lib/scrapers/version.rb +2 -2
- data/scrapers.gemspec +4 -1
- data/spec/lib/scrapers/rubytapas/dpdcart_spec.rb +68 -0
- data/spec/lib/scrapers/rubytapas/episode_spec.rb +140 -0
- data/spec/lib/scrapers/rubytapas/rubytapas_spec.rb +87 -0
- data/spec/lib/scrapers/rubytapas/scraper_spec.rb +83 -0
- data/spec/lib/scrapers/rubytapas/test_data/feed.xml +7038 -0
- data/spec/lib/scrapers/{wunderground_spec.rb → wunderground_spec.rb.no} +0 -0
- data/spec/scrapers/allrecipes_spec.rb +2 -2
- data/spec/scrapers/discoverynews_spec.rb +3 -14
- data/spec/scrapers/download_spec.rb +6 -16
- data/spec/scrapers/gocomics_spec.rb +3 -3
- data/spec/scrapers/imgur_spec.rb +10 -22
- data/spec/scrapers/manning_books_spec.rb +9 -6
- data/spec/scrapers/nasa_apod_spec.rb +12 -14
- data/spec/scrapers/sinfest_spec.rb +3 -3
- data/spec/scrapers/xkcd_spec.rb +1 -0
- data/spec/scrapers_spec.rb +2 -1
- data/spec/spec_helper.rb +1 -8
- data/spec/support/dir_helpers.rb +13 -0
- data/spec/support/use_vcr.rb +9 -0
- data/vcr_cassettes/nasa-apod.yml +348 -0
- data/vcr_cassettes/rubytapas-download-1.yml +6726 -0
- data/vcr_cassettes/rubytapas-download-all.yml +6726 -0
- data/vcr_cassettes/rubytapas_download.yml +982 -0
- data/vcr_cassettes/rubytapas_download_twice.yml +1064 -0
- data/vcr_cassettes/rubytapas_feed.yml +5880 -0
- data/vcr_cassettes/rubytapas_login.yml +849 -0
- metadata +74 -6
File without changes
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require "scrapers/allrecipes"
|
2
3
|
|
3
4
|
module Scrapers
|
4
5
|
|
@@ -11,7 +12,7 @@ module Scrapers
|
|
11
12
|
Scrapers::AllRecipes.scrape(@url)
|
12
13
|
end
|
13
14
|
end
|
14
|
-
|
15
|
+
|
15
16
|
it "retrieves a recipe" do
|
16
17
|
@recipe.should_not be_nil
|
17
18
|
end
|
@@ -26,4 +27,3 @@ module Scrapers
|
|
26
27
|
end
|
27
28
|
end
|
28
29
|
end
|
29
|
-
|
@@ -1,15 +1,5 @@
|
|
1
|
-
=begin rdoc
|
2
|
-
|
3
|
-
= DISCOVERYNEWS_SPEC.RB
|
4
|
-
|
5
|
-
*Author*:: Tamara Temple <tamouse@gmail.com>
|
6
|
-
*Since*:: 2013-06-15
|
7
|
-
*Copyright*:: (c) 2013 Tamara Temple Web Development
|
8
|
-
*License*:: MIT
|
9
|
-
|
10
|
-
=end
|
11
|
-
|
12
1
|
require 'spec_helper'
|
2
|
+
require 'scrapers/discoverynews'
|
13
3
|
|
14
4
|
|
15
5
|
module Scrapers
|
@@ -24,7 +14,7 @@ module Scrapers
|
|
24
14
|
Scrapers::DiscoNews.disco_downloads(url)
|
25
15
|
end
|
26
16
|
end
|
27
|
-
|
17
|
+
|
28
18
|
it "retrieves an array of images" do
|
29
19
|
images.should be_a(Array)
|
30
20
|
images.each do |i|
|
@@ -32,8 +22,7 @@ module Scrapers
|
|
32
22
|
end
|
33
23
|
end
|
34
24
|
end
|
35
|
-
|
25
|
+
|
36
26
|
end
|
37
27
|
|
38
28
|
end
|
39
|
-
|
@@ -1,15 +1,5 @@
|
|
1
|
-
=begin rdoc
|
2
|
-
|
3
|
-
= DOWNLOAD_SPEC.RB
|
4
|
-
|
5
|
-
*Author*:: Tamara Temple <tamara@tamaratemple.com>
|
6
|
-
*Since*:: 2013-05-27
|
7
|
-
*Copyright*:: (c) 2013 Tamara Temple Web Development
|
8
|
-
*License*:: MIT
|
9
|
-
|
10
|
-
=end
|
11
|
-
|
12
1
|
require 'spec_helper'
|
2
|
+
require "scrapers/download"
|
13
3
|
require 'tmpdir'
|
14
4
|
|
15
5
|
def in_tmpdir
|
@@ -24,7 +14,7 @@ end
|
|
24
14
|
module Scrapers
|
25
15
|
|
26
16
|
describe Download do
|
27
|
-
|
17
|
+
|
28
18
|
it {Scrapers::Download.should respond_to :download}
|
29
19
|
|
30
20
|
it "should download and save the file" do
|
@@ -34,7 +24,7 @@ module Scrapers
|
|
34
24
|
@file = Scrapers::Download.download(@url,dir)
|
35
25
|
end
|
36
26
|
@file.should =~ /.*snrrrrrrrrrrrf.*Imgur\.jpg/
|
37
|
-
File.exist?(@file).should
|
27
|
+
File.exist?(@file).should be true
|
38
28
|
end
|
39
29
|
end
|
40
30
|
it "should overwrite file with second download" do
|
@@ -46,7 +36,7 @@ module Scrapers
|
|
46
36
|
end
|
47
37
|
@file1.should eq @file2
|
48
38
|
@file1.should eq File.join(dir,'sandwich.png')
|
49
|
-
File.exist?(@file1).should
|
39
|
+
File.exist?(@file1).should be true
|
50
40
|
end
|
51
41
|
end
|
52
42
|
it "should make a new file on second download" do
|
@@ -64,9 +54,9 @@ module Scrapers
|
|
64
54
|
|
65
55
|
@file1.should_not eq @file2
|
66
56
|
@file1.should eq File.join(dir,'sandwich.png')
|
67
|
-
File.exist?(@file1).should
|
57
|
+
File.exist?(@file1).should be true
|
68
58
|
@file2.should eq File.join(dir,'sandwich.png.1')
|
69
|
-
File.exist?(@file2).should
|
59
|
+
File.exist?(@file2).should be true
|
70
60
|
end
|
71
61
|
end
|
72
62
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require "scrapers/gocomics"
|
2
3
|
|
3
4
|
module Scrapers
|
4
5
|
|
@@ -11,7 +12,7 @@ module Scrapers
|
|
11
12
|
Scrapers::GoComics.scrape(@comic_strip)
|
12
13
|
end
|
13
14
|
end
|
14
|
-
|
15
|
+
|
15
16
|
it "retrieves a comic" do
|
16
17
|
@comic.should_not be_nil
|
17
18
|
end
|
@@ -39,8 +40,7 @@ module Scrapers
|
|
39
40
|
it{@comic[:img_src].should_not be_empty}
|
40
41
|
it{URI.parse(@comic[:img_src]).should be_a(URI::HTTP)}
|
41
42
|
end
|
42
|
-
|
43
|
+
|
43
44
|
end
|
44
45
|
end
|
45
46
|
end
|
46
|
-
|
data/spec/scrapers/imgur_spec.rb
CHANGED
@@ -1,31 +1,19 @@
|
|
1
|
-
=begin rdoc
|
2
|
-
|
3
|
-
= IMGUR_SPEC.RB
|
4
|
-
|
5
|
-
*Author*:: Tamara Temple <tamara@tamaratemple.com>
|
6
|
-
*Since*:: 2013-05-27
|
7
|
-
*Copyright*:: (c) 2013 Tamara Temple Web Development
|
8
|
-
*License*:: MIT
|
9
|
-
|
10
|
-
=end
|
11
|
-
|
12
1
|
require 'spec_helper'
|
2
|
+
require "scrapers/imgur"
|
13
3
|
|
14
4
|
module Scrapers
|
15
5
|
|
16
|
-
describe "
|
17
|
-
|
18
|
-
|
6
|
+
describe "Imgur Scraping" do
|
7
|
+
describe "Scrapers" do
|
8
|
+
it {expect(Scrapers).to respond_to(:imgur)}
|
9
|
+
end
|
19
10
|
|
20
|
-
|
21
|
-
|
11
|
+
describe "Fetch the download link" do
|
12
|
+
let(:url) {"http://imgur.com/v70StgA"}
|
22
13
|
|
23
|
-
|
24
|
-
|
14
|
+
it "should return the download link from a given url" do
|
15
|
+
expect(Scrapers.imgur(url)).to match(%r{http://imgur.com/download/v70StgA/})
|
16
|
+
end
|
25
17
|
end
|
26
|
-
|
27
18
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
19
|
end
|
@@ -17,7 +17,7 @@ RSpec.describe Scrapers::ManningBooks::Scraper do
|
|
17
17
|
it { is_expected.to respond_to :download_books }
|
18
18
|
end
|
19
19
|
describe "#login" do
|
20
|
-
let(:scraper) { Scrapers::ManningBooks::Scraper.new }
|
20
|
+
let(:scraper) { Scrapers::ManningBooks::Scraper.new }
|
21
21
|
let(:agent) { double('agent') }
|
22
22
|
|
23
23
|
before do
|
@@ -46,7 +46,7 @@ RSpec.describe Scrapers::ManningBooks::Scraper do
|
|
46
46
|
scraper.login(agent) { |m| @result = "in yield" }
|
47
47
|
expect(@result).to eq("in yield")
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
end
|
51
51
|
|
52
52
|
context "when login is not passed a block" do
|
@@ -62,11 +62,15 @@ RSpec.describe Scrapers::ManningBooks::Scraper do
|
|
62
62
|
let(:agent) {double('agent')}
|
63
63
|
let(:books) do
|
64
64
|
3.times.map do |i|
|
65
|
-
|
65
|
+
{
|
66
|
+
title: "Book #{i}",
|
67
|
+
downloads: {
|
68
|
+
pdf: "path/to/download.pdf"
|
69
|
+
}
|
70
|
+
}
|
66
71
|
end
|
67
72
|
end
|
68
73
|
|
69
|
-
|
70
74
|
before do
|
71
75
|
allow(Scrapers::NetrcReader).to receive(:new) do
|
72
76
|
OpenStruct.new(user: "joe@example.com", pw: "password")
|
@@ -79,10 +83,9 @@ RSpec.describe Scrapers::ManningBooks::Scraper do
|
|
79
83
|
save_stdout = $stdout
|
80
84
|
$stdout = double('output').as_null_object
|
81
85
|
expect(agent).to receive(:get).exactly(3).times
|
82
|
-
expect(agent).to receive(:current_page).exactly(3*
|
86
|
+
expect(agent).to receive(:current_page).exactly(3*3).times.and_return(agent)
|
83
87
|
expect(agent).to receive(:filename).exactly(3*2).times.and_return("FILENAME")
|
84
88
|
expect(agent).to receive(:save!).exactly(3).times
|
85
|
-
expect(agent).to receive(:uri).exactly(3).times
|
86
89
|
results = scraper.download_books(agent, books)
|
87
90
|
$stdout = save_stdout
|
88
91
|
expect(results.size).to eq(3)
|
@@ -1,35 +1,33 @@
|
|
1
|
-
|
2
1
|
require 'spec_helper'
|
3
|
-
|
2
|
+
require "scrapers/nasa_apod"
|
4
3
|
|
5
4
|
module Scrapers
|
6
|
-
|
5
|
+
|
7
6
|
describe NasaApod do
|
8
7
|
it {Scrapers::NasaApod.should respond_to :scrape}
|
9
8
|
|
10
9
|
context "scrape" do
|
11
10
|
|
12
11
|
before(:all) do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
# end
|
12
|
+
@url = "http://apod.nasa.gov/apod/astropix.html"
|
13
|
+
VCR.use_cassette("nasa-apod", :record => :new_episodes) do
|
14
|
+
@apod_hash = Scrapers::NasaApod.scrape(@url)
|
15
|
+
end
|
18
16
|
end
|
19
|
-
|
20
|
-
|
17
|
+
|
18
|
+
it "should be a Hash" do
|
21
19
|
@apod_hash.should be_a(Hash)
|
22
20
|
end
|
23
|
-
|
21
|
+
|
24
22
|
%w{title link description pubDate guid content_encoded}.map(&:to_sym).each do |attr|
|
25
23
|
it "should include #{attr}" do
|
26
24
|
@apod_hash.keys.should include attr
|
27
25
|
end
|
28
|
-
|
26
|
+
it "#{attr} should not be nil" do
|
29
27
|
@apod_hash[attr].should_not be_nil
|
30
28
|
end
|
31
|
-
|
32
|
-
|
29
|
+
|
30
|
+
it "#{attr} should be a Sring" do
|
33
31
|
@apod_hash[attr].should be_a(String)
|
34
32
|
end
|
35
33
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require "scrapers/sinfest"
|
2
3
|
|
3
4
|
module Scrapers
|
4
5
|
|
@@ -10,7 +11,7 @@ module Scrapers
|
|
10
11
|
Scrapers::Sinfest.scrape
|
11
12
|
end
|
12
13
|
end
|
13
|
-
|
14
|
+
|
14
15
|
it "retrieves a comic" do
|
15
16
|
@comic.should_not be_nil
|
16
17
|
end
|
@@ -39,8 +40,7 @@ module Scrapers
|
|
39
40
|
it{URI.parse(@comic[:img_src]).should be_a(URI::HTTP)}
|
40
41
|
it{@comic[:img_src].should eq 'http://sinfest.net/comikaze/comics/2013-10-19.gif'}
|
41
42
|
end
|
42
|
-
|
43
|
+
|
43
44
|
end
|
44
45
|
end
|
45
46
|
end
|
46
|
-
|
data/spec/scrapers/xkcd_spec.rb
CHANGED
data/spec/scrapers_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'vcr'
|
2
|
-
|
3
1
|
# This file was generated by the `rspec --init` command. Conventionally, all
|
4
2
|
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
5
3
|
# Require this file using `require "spec_helper"` to ensure that it is only
|
@@ -14,10 +12,5 @@ RSpec.configure do |config|
|
|
14
12
|
# order dependency and want to debug it, you can fix the order by providing
|
15
13
|
# the seed, which is printed after each run.
|
16
14
|
# --seed 1234
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
VCR.configure do |c|
|
21
|
-
c.cassette_library_dir = 'vcr_cassettes'
|
22
|
-
c.hook_into :webmock
|
15
|
+
config.order = 'random'
|
23
16
|
end
|
@@ -0,0 +1,348 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://apod.nasa.gov/apod/astropix.html
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip,deflate,identity
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Mechanize/2.7.3 Ruby/2.2.0p0 (http://github.com/sparklemotion/mechanize/)
|
16
|
+
Accept-Charset:
|
17
|
+
- ISO-8859-1,utf-8;q=0.7,*;q=0.7
|
18
|
+
Accept-Language:
|
19
|
+
- en-us,en;q=0.5
|
20
|
+
Host:
|
21
|
+
- apod.nasa.gov
|
22
|
+
Connection:
|
23
|
+
- keep-alive
|
24
|
+
Keep-Alive:
|
25
|
+
- 300
|
26
|
+
response:
|
27
|
+
status:
|
28
|
+
code: 200
|
29
|
+
message: OK
|
30
|
+
headers:
|
31
|
+
Date:
|
32
|
+
- Tue, 30 Jun 2015 21:47:29 GMT
|
33
|
+
Server:
|
34
|
+
- WebServer/1.0
|
35
|
+
Accept-Ranges:
|
36
|
+
- bytes
|
37
|
+
Keep-Alive:
|
38
|
+
- timeout=5, max=100
|
39
|
+
Connection:
|
40
|
+
- Keep-Alive
|
41
|
+
Transfer-Encoding:
|
42
|
+
- chunked
|
43
|
+
Content-Type:
|
44
|
+
- text/html; charset=ISO-8859-1
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: "<!doctype html>\n<html>\n<head>\n<title>Astronomy Picture of the Day\n</title>
|
48
|
+
\n<!-- gsfc meta tags -->\n<meta name=\"orgcode\" content=\"661\">\n<meta
|
49
|
+
name=\"rno\" content=\"phillip.a.newman\">\n<meta name=\"content-owner\" content=\"Jerry.T.Bonnell.1\">\n<meta
|
50
|
+
name=\"webmaster\" content=\"Stephen.F.Fantasia.1\">\n<meta name=\"description\"
|
51
|
+
content=\"A different astronomy and space science\nrelated image is featured
|
52
|
+
each day, along with a brief explanation.\">\n<!-- -->\n<meta name=\"keywords\"
|
53
|
+
content=\"Ceres, asteroid, mountain\">\n<!-- -->\n<script id=\"_fed_an_js_tag\"
|
54
|
+
type=\"text/javascript\"\nsrc=\"js/federated-analytics.all.min.js?agency=NASA\"></script>\n\n</head>\n\n<body
|
55
|
+
BGCOLOR=\"#F4F4FF\" text=\"#000000\" link=\"#0000FF\" vlink=\"#7F0F9F\"\nalink=\"#FF0000\">\n\n<center>\n<h1>
|
56
|
+
Astronomy Picture of the Day </h1>\n<p>\n\n<a href=\"archivepix.html\">Discover
|
57
|
+
the cosmos!</a>\nEach day a different image or photograph of our fascinating
|
58
|
+
universe is\nfeatured, along with a brief explanation written by a professional
|
59
|
+
astronomer.\n<p>\n\n2015 June 30 \n<br> \n<a href=\"image/1506/CeresMountain_Dawn_1041.jpg\">\n<IMG
|
60
|
+
SRC=\"image/1506/CeresMountain_Dawn_960.jpg\"\n alt=\"See Explanation. Clicking
|
61
|
+
on the picture will download\n the highest resolution version available.\"></a>\n\n</center>\n\n<center>\n<b>
|
62
|
+
An Unusual Mountain on Asteroid Ceres </b> <br> \n<b> Image Credit: </b> \n<a
|
63
|
+
href=\"http://www.nasa.gov/\">NASA</a>, \n<a href=\"http://www.jpl.nasa.gov/\">JPL-Caltech</a>,
|
64
|
+
\n<a href=\"http://dawn.igpp.ucla.edu/\">UCLA</a>,\nMPS/DLR/IDA\n</center>
|
65
|
+
<p> \n\n<b> Explanation: </b> \nWhat created this large mountain on asteroid
|
66
|
+
Ceres?\n\nNo one is yet sure.\n\nAs if in anticipation of today being \n<a
|
67
|
+
href=\"http://www.asteroidday.org/\">Asteroid</a> \n<a href=\"https://en.wikipedia.org/wiki/Asteroid_Day\">Day</a>
|
68
|
+
on Earth, the robotic spacecraft \n<a href=\"http://dawn.jpl.nasa.gov/\">Dawn</a>
|
69
|
+
in orbit around Ceres took the best yet image of an unusually tall mountain
|
70
|
+
on the Asteroid Belt's largest asteroid.\n\nVisible at the top of the \n<a
|
71
|
+
href=\"http://www.nasa.gov/jpl/pia19578/dawn-survey-orbit-image-10\"\n>featured
|
72
|
+
image</a>, the exceptional mountain rises about \nfive kilometers up from
|
73
|
+
an area that otherwise appears pretty level.\n\nThe <a href=\"http://photojournal.jpl.nasa.gov/catalog/PIA19578\"\n>image</a>
|
74
|
+
was taken about two weeks ago from about 4,400 kilometers away. \n\nAlthough
|
75
|
+
<a href=\n\"http://www.slate.com/blogs/bad_astronomy/2015/06/22/ceres_dawn_images_reveal_a_5_km_tall_mountain.html\"\n>origin
|
76
|
+
hypotheses for the mountain</a> include volcanism, impacts, and plate tectonics,
|
77
|
+
clear evidence backing any of these is currently lacking. \n\nAlso visible
|
78
|
+
\n<a href=\"ap150610.html\">across Ceres'</a> surface are some enigmatic light
|
79
|
+
areas: \n<a href=\"ap150514.html\">bright spots</a> whose origin and composition
|
80
|
+
that also \nremain an \n<a href=\"http://i.ytimg.com/vi/OIamIdHV37I/maxresdefault.jpg\">active
|
81
|
+
topic of investigation</a>.\n\nEven though Dawn is expected to continue to
|
82
|
+
orbit Ceres, officially dubbed a \n<a href=\"https://en.wikipedia.org/wiki/Dwarf_planet\">dwarf
|
83
|
+
planet</a>, for millions of years, the \n<a href=\"https://www.youtube.com/watch?v=5UFTfwTxeEk\">hydrazine
|
84
|
+
fuel</a> used to point \n<a href=\"http://www.popsci.com/whats-next-dawn-mission-keri-bean\">Dawn's
|
85
|
+
communications</a> \nantenna toward Earth is expected to run out sometime
|
86
|
+
next year.\n\n\n<p> <center> \n<b> Tonight & tomorrow: </b> \n<a href=\"https://www.youtube.com/watch?v=_ppuCZR8Mkw\">See
|
87
|
+
Venus & Jupiter together after sunset</a> <br>\n<b> Tomorrow's picture: </b>star
|
88
|
+
clouds\n\n<p> <hr>\n<a href=\"ap150629.html\"><</a>\n| <a href=\"archivepix.html\">Archive</a>\n|
|
89
|
+
<a href=\"lib/apsubmit2015.html\">Submissions</a> \n| <a href=\"lib/aptree.html\">Index</a>\n|
|
90
|
+
<a href=\"http://antwrp.gsfc.nasa.gov/cgi-bin/apod/apod_search\">Search</a>\n|
|
91
|
+
<a href=\"calendar/allyears.html\">Calendar</a>\n| <a href=\"/apod.rss\">RSS</a>\n|
|
92
|
+
<a href=\"lib/edlinks.html\">Education</a>\n| <a href=\"lib/about_apod.html\">About
|
93
|
+
APOD</a>\n| <a href=\n\"http://asterisk.apod.com/discuss_apod.php?date=150630\">Discuss</a>\n|
|
94
|
+
<a href=\"ap150701.html\">></a>\n\n<hr><p>\n<b> Authors & editors: </b>\n<a
|
95
|
+
href=\"http://www.phy.mtu.edu/faculty/Nemiroff.html\">Robert Nemiroff</a>\n(<a
|
96
|
+
href=\"http://www.phy.mtu.edu/\">MTU</a>) &\n<a href=\"http://antwrp.gsfc.nasa.gov/htmltest/jbonnell/www/bonnell.html\"\n>Jerry
|
97
|
+
Bonnell</a> (<a href=\"http://www.astro.umd.edu/\">UMCP</a>)<br>\n<b>NASA
|
98
|
+
Official: </b> Phillip Newman\n<a href=\"lib/about_apod.html#srapply\">Specific
|
99
|
+
rights apply</a>.<br>\n<a href=\"http://www.nasa.gov/about/highlights/HP_Privacy.html\">NASA
|
100
|
+
Web\nPrivacy Policy and Important Notices</a><br>\n<b>A service of:</b>\n<a
|
101
|
+
href=\"http://astrophysics.gsfc.nasa.gov/\">ASD</a> at\n<a href=\"http://www.nasa.gov/\">NASA</a>
|
102
|
+
/\n<a href=\"http://www.nasa.gov/centers/goddard/\">GSFC</a>\n<br><b>&</b>
|
103
|
+
<a href=\"http://www.mtu.edu/\">Michigan Tech. U.</a><br>\n</center>\n</body>\n</html>\n"
|
104
|
+
http_version:
|
105
|
+
recorded_at: Tue, 30 Jun 2015 21:47:29 GMT
|
106
|
+
- request:
|
107
|
+
method: get
|
108
|
+
uri: http://apod.nasa.gov/apod/ap150629.html
|
109
|
+
body:
|
110
|
+
encoding: US-ASCII
|
111
|
+
string: ''
|
112
|
+
headers:
|
113
|
+
Accept-Encoding:
|
114
|
+
- gzip,deflate,identity
|
115
|
+
Accept:
|
116
|
+
- "*/*"
|
117
|
+
User-Agent:
|
118
|
+
- Mechanize/2.7.3 Ruby/2.2.0p0 (http://github.com/sparklemotion/mechanize/)
|
119
|
+
Accept-Charset:
|
120
|
+
- ISO-8859-1,utf-8;q=0.7,*;q=0.7
|
121
|
+
Accept-Language:
|
122
|
+
- en-us,en;q=0.5
|
123
|
+
Host:
|
124
|
+
- apod.nasa.gov
|
125
|
+
Referer:
|
126
|
+
- !ruby/object:URI::HTTP
|
127
|
+
scheme: http
|
128
|
+
user:
|
129
|
+
password:
|
130
|
+
host: apod.nasa.gov
|
131
|
+
port: 80
|
132
|
+
path: "/apod/astropix.html"
|
133
|
+
query:
|
134
|
+
opaque:
|
135
|
+
fragment:
|
136
|
+
parser: &1 !ruby/object:URI::RFC3986_Parser
|
137
|
+
regexp:
|
138
|
+
:SCHEME: !ruby/regexp /\A[A-Za-z][A-Za-z0-9+\-.]*\z/
|
139
|
+
:USERINFO: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*\z/
|
140
|
+
:HOST: !ruby/regexp /\A(?:(?<IP-literal>\[(?:(?<IPv6address>(?:\h{1,4}:){6}(?<ls32>\h{1,4}:\h{1,4}|(?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>))|::(?:\h{1,4}:){5}\g<ls32>|\h{,4}::(?:\h{1,4}:){4}\g<ls32>|(?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?<IPvFuture>v\h+\.[!$&-.0-;=A-Z_a-z~]+))\])|\g<IPv4address>|(?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])*))\z/
|
141
|
+
:ABS_PATH: !ruby/regexp /\A\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/
|
142
|
+
:REL_PATH: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~])+(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/
|
143
|
+
:QUERY: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/
|
144
|
+
:FRAGMENT: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/
|
145
|
+
:OPAQUE: !ruby/regexp /\A(?:[^\/].*)?\z/
|
146
|
+
:PORT: !ruby/regexp /\A[\x09\x0a\x0c\x0d ]*\d*[\x09\x0a\x0c\x0d ]*\z/
|
147
|
+
Connection:
|
148
|
+
- keep-alive
|
149
|
+
Keep-Alive:
|
150
|
+
- 300
|
151
|
+
response:
|
152
|
+
status:
|
153
|
+
code: 200
|
154
|
+
message: OK
|
155
|
+
headers:
|
156
|
+
Date:
|
157
|
+
- Tue, 30 Jun 2015 21:47:30 GMT
|
158
|
+
Server:
|
159
|
+
- WebServer/1.0
|
160
|
+
Accept-Ranges:
|
161
|
+
- bytes
|
162
|
+
Keep-Alive:
|
163
|
+
- timeout=5, max=100
|
164
|
+
Connection:
|
165
|
+
- Keep-Alive
|
166
|
+
Transfer-Encoding:
|
167
|
+
- chunked
|
168
|
+
Content-Type:
|
169
|
+
- text/html; charset=ISO-8859-1
|
170
|
+
body:
|
171
|
+
encoding: UTF-8
|
172
|
+
string: "<!doctype html>\n<html>\n<head>\n<title> APOD: 2015 June 29 - Sunspot
|
173
|
+
Group AR 2339 Crosses the Sun \n</title> \n<!-- gsfc meta tags -->\n<meta
|
174
|
+
name=\"orgcode\" content=\"661\">\n<meta name=\"rno\" content=\"phillip.a.newman\">\n<meta
|
175
|
+
name=\"content-owner\" content=\"Jerry.T.Bonnell.1\">\n<meta name=\"webmaster\"
|
176
|
+
content=\"Stephen.F.Fantasia.1\">\n<meta name=\"description\" content=\"A
|
177
|
+
different astronomy and space science\nrelated image is featured each day,
|
178
|
+
along with a brief explanation.\">\n<!-- -->\n<meta name=\"keywords\" content=\"Sun,
|
179
|
+
sunspot, active region\">\n<!-- -->\n<script id=\"_fed_an_js_tag\" type=\"text/javascript\"\nsrc=\"js/federated-analytics.all.min.js?agency=NASA\"></script>\n\n</head>\n\n<body
|
180
|
+
BGCOLOR=\"#F4F4FF\" text=\"#000000\" link=\"#0000FF\" vlink=\"#7F0F9F\"\nalink=\"#FF0000\">\n\n<center>\n<h1>
|
181
|
+
Astronomy Picture of the Day </h1>\n<p>\n\n<a href=\"archivepix.html\">Discover
|
182
|
+
the cosmos!</a>\nEach day a different image or photograph of our fascinating
|
183
|
+
universe is\nfeatured, along with a brief explanation written by a professional
|
184
|
+
astronomer.\n<p>\n\n2015 June 29 \n<br> \n<iframe width=\"960\" height=\"540\"
|
185
|
+
src=\"https://www.youtube.com/embed/BejRxZAa66E?rel=0\" frameborder=\"0\"
|
186
|
+
allowfullscreen></iframe>\n\n</center>\n\n<center>\n<b> Sunspot Group AR 2339
|
187
|
+
Crosses the Sun </b> <br> \n<b> Images Credit: </b> \n<a href=\"http://www.nasa.gov/\">NASA</a>,
|
188
|
+
\n<a href=\"http://sdo.gsfc.nasa.gov/\">SDO</a>;\n<b> Video compilation &
|
189
|
+
Copyright: </b> \n<a href=\"mailto: astro .dot. stas @at@ gmail .dot. com\">Stanislav
|
190
|
+
Korotkiy</a>\n(<a href=\"http://vk.com/astro.nomy\">AstroAlert</a>) &\nMikhail
|
191
|
+
Chubarets; <br>\n<i> Music: </i> <a href=\"https://www.youtube.com/watch?v=vtHZqcDlUp4\"\n>Pas
|
192
|
+
de Deux (Bird Creek)</a> \n</center> <p> \n\n<b> Explanation: </b> \nHow do
|
193
|
+
sunspots evolve?\n\nLarge dark \n<a href=\"ap050216.html\">sunspot</a>s --
|
194
|
+
and the active regions that contain them -- may last for weeks, but all during
|
195
|
+
that time they are constantly changing.\n\nSuch variations were particularly
|
196
|
+
apparent a few weeks ago as the active region \n<a href=\"http://earthsky.org/todays-image/large-sunspot-group-ar-2339\">AR
|
197
|
+
2339</a> \ncame around the limb of the Sun and was tracked for the next 12
|
198
|
+
days by NASA's \n<a href=\"http://sdo.gsfc.nasa.gov/mission/\">Solar Dynamic
|
199
|
+
Observatory</a>. \n\nIn the \n<a href=\"https://www.youtube.com/watch?v=BejRxZAa66E\">featured
|
200
|
+
time lapse video</a>, \nsome sunspots drift apart, while others merge.\n\nAll
|
201
|
+
the while, the dark central \n<a href=\"http://www.spaceweatherlive.com/en/help/what-are-sunspots\">umbral
|
202
|
+
regions</a> \nshift internally and their surrounding lighter penumbras shimmer
|
203
|
+
and wave. \n\nThe surrounding \n<a href=\"http://missionscience.nasa.gov/sun/\">Sun</a>
|
204
|
+
\nappears to flicker as the carpet of yellow \n<a href=\"ap111106.html\">granules
|
205
|
+
come and go</a> on the time scale of hours. \n\nIn general, <a href=\"https://en.wikipedia.org/wiki/Sunspot\">sunspots</a>
|
206
|
+
\nare relatively cool regions where the local \n<a href=\"http://solarscience.msfc.nasa.gov/the_key.shtml\">magnetic
|
207
|
+
field</a> \npokes through the Sun's surface and inhibits heating.\n\nOver
|
208
|
+
the past week, an even more active region -- \n<a href=\"http://spaceweather.com/archive.php?view=1&day=23&month=06&year=2015\"\n>AR
|
209
|
+
2371</a> -- has been crossing the Sun and releasing powerful flares that have
|
210
|
+
resulted in \n<a href=\"http://spaceweathergallery.com/aurora_gallery.html\"\n>impressive
|
211
|
+
auroras</a> here on Earth.\n\n<p> <center> \n<b> Follow APOD on: </b> \n<a
|
212
|
+
href=\"https://www.facebook.com/AstronomyPictureOfTheDay\">Facebook</a>, \n<a
|
213
|
+
href=\"https://plus.google.com/u/1/+AstronomyPictureOfTheDay\">Google Plus</a>,
|
214
|
+
or \n<a href=\"http://twitter.com/apod/\">Twitter</a> <br>\n<b> Tomorrow's
|
215
|
+
picture: </b><a href=\"ap150630.html\">asteroid day</a>\n\n<p> <hr>\n<a href=\"ap150628.html\"><</a>\n|
|
216
|
+
<a href=\"archivepix.html\">Archive</a>\n| <a href=\"lib/apsubmit2015.html\">Submissions</a>
|
217
|
+
\n| <a href=\"lib/aptree.html\">Index</a>\n| <a href=\"http://antwrp.gsfc.nasa.gov/cgi-bin/apod/apod_search\">Search</a>\n|
|
218
|
+
<a href=\"calendar/allyears.html\">Calendar</a>\n| <a href=\"/apod.rss\">RSS</a>\n|
|
219
|
+
<a href=\"lib/edlinks.html\">Education</a>\n| <a href=\"lib/about_apod.html\">About
|
220
|
+
APOD</a>\n| <a href=\n\"http://asterisk.apod.com/discuss_apod.php?date=150629\">Discuss</a>\n|
|
221
|
+
<a href=\"ap150630.html\">></a>\n\n<hr><p>\n<b> Authors & editors: </b>\n<a
|
222
|
+
href=\"http://www.phy.mtu.edu/faculty/Nemiroff.html\">Robert Nemiroff</a>\n(<a
|
223
|
+
href=\"http://www.phy.mtu.edu/\">MTU</a>) &\n<a href=\"http://antwrp.gsfc.nasa.gov/htmltest/jbonnell/www/bonnell.html\"\n>Jerry
|
224
|
+
Bonnell</a> (<a href=\"http://www.astro.umd.edu/\">UMCP</a>)<br>\n<b>NASA
|
225
|
+
Official: </b> Phillip Newman\n<a href=\"lib/about_apod.html#srapply\">Specific
|
226
|
+
rights apply</a>.<br>\n<a href=\"http://www.nasa.gov/about/highlights/HP_Privacy.html\">NASA
|
227
|
+
Web\nPrivacy Policy and Important Notices</a><br>\n<b>A service of:</b>\n<a
|
228
|
+
href=\"http://astrophysics.gsfc.nasa.gov/\">ASD</a> at\n<a href=\"http://www.nasa.gov/\">NASA</a>
|
229
|
+
/\n<a href=\"http://www.nasa.gov/centers/goddard/\">GSFC</a>\n<br><b>&</b>
|
230
|
+
<a href=\"http://www.mtu.edu/\">Michigan Tech. U.</a><br>\n</center>\n</body>\n</html>\n"
|
231
|
+
http_version:
|
232
|
+
recorded_at: Tue, 30 Jun 2015 21:47:30 GMT
|
233
|
+
- request:
|
234
|
+
method: get
|
235
|
+
uri: http://apod.nasa.gov/apod/ap150630.html
|
236
|
+
body:
|
237
|
+
encoding: US-ASCII
|
238
|
+
string: ''
|
239
|
+
headers:
|
240
|
+
Accept-Encoding:
|
241
|
+
- gzip,deflate,identity
|
242
|
+
Accept:
|
243
|
+
- "*/*"
|
244
|
+
User-Agent:
|
245
|
+
- Mechanize/2.7.3 Ruby/2.2.0p0 (http://github.com/sparklemotion/mechanize/)
|
246
|
+
Accept-Charset:
|
247
|
+
- ISO-8859-1,utf-8;q=0.7,*;q=0.7
|
248
|
+
Accept-Language:
|
249
|
+
- en-us,en;q=0.5
|
250
|
+
Host:
|
251
|
+
- apod.nasa.gov
|
252
|
+
Referer:
|
253
|
+
- !ruby/object:URI::HTTP
|
254
|
+
scheme: http
|
255
|
+
user:
|
256
|
+
password:
|
257
|
+
host: apod.nasa.gov
|
258
|
+
port: 80
|
259
|
+
path: "/apod/ap150629.html"
|
260
|
+
query:
|
261
|
+
opaque:
|
262
|
+
fragment:
|
263
|
+
parser: *1
|
264
|
+
Connection:
|
265
|
+
- keep-alive
|
266
|
+
Keep-Alive:
|
267
|
+
- 300
|
268
|
+
response:
|
269
|
+
status:
|
270
|
+
code: 200
|
271
|
+
message: OK
|
272
|
+
headers:
|
273
|
+
Date:
|
274
|
+
- Tue, 30 Jun 2015 21:47:30 GMT
|
275
|
+
Server:
|
276
|
+
- WebServer/1.0
|
277
|
+
Accept-Ranges:
|
278
|
+
- bytes
|
279
|
+
Keep-Alive:
|
280
|
+
- timeout=5, max=100
|
281
|
+
Connection:
|
282
|
+
- Keep-Alive
|
283
|
+
Transfer-Encoding:
|
284
|
+
- chunked
|
285
|
+
Content-Type:
|
286
|
+
- text/html; charset=ISO-8859-1
|
287
|
+
body:
|
288
|
+
encoding: UTF-8
|
289
|
+
string: "<!doctype html>\n<html>\n<head>\n<title> APOD: 2015 June 30 - An Unusual
|
290
|
+
Mountain on Asteroid Ceres \n</title> \n<!-- gsfc meta tags -->\n<meta name=\"orgcode\"
|
291
|
+
content=\"661\">\n<meta name=\"rno\" content=\"phillip.a.newman\">\n<meta
|
292
|
+
name=\"content-owner\" content=\"Jerry.T.Bonnell.1\">\n<meta name=\"webmaster\"
|
293
|
+
content=\"Stephen.F.Fantasia.1\">\n<meta name=\"description\" content=\"A
|
294
|
+
different astronomy and space science\nrelated image is featured each day,
|
295
|
+
along with a brief explanation.\">\n<!-- -->\n<meta name=\"keywords\" content=\"Ceres,
|
296
|
+
asteroid, mountain\">\n<!-- -->\n<script id=\"_fed_an_js_tag\" type=\"text/javascript\"\nsrc=\"js/federated-analytics.all.min.js?agency=NASA\"></script>\n\n</head>\n\n<body
|
297
|
+
BGCOLOR=\"#F4F4FF\" text=\"#000000\" link=\"#0000FF\" vlink=\"#7F0F9F\"\nalink=\"#FF0000\">\n\n<center>\n<h1>
|
298
|
+
Astronomy Picture of the Day </h1>\n<p>\n\n<a href=\"archivepix.html\">Discover
|
299
|
+
the cosmos!</a>\nEach day a different image or photograph of our fascinating
|
300
|
+
universe is\nfeatured, along with a brief explanation written by a professional
|
301
|
+
astronomer.\n<p>\n\n2015 June 30 \n<br> \n<a href=\"image/1506/CeresMountain_Dawn_1041.jpg\">\n<IMG
|
302
|
+
SRC=\"image/1506/CeresMountain_Dawn_960.jpg\"\n alt=\"See Explanation. Clicking
|
303
|
+
on the picture will download\n the highest resolution version available.\"></a>\n\n</center>\n\n<center>\n<b>
|
304
|
+
An Unusual Mountain on Asteroid Ceres </b> <br> \n<b> Image Credit: </b> \n<a
|
305
|
+
href=\"http://www.nasa.gov/\">NASA</a>, \n<a href=\"http://www.jpl.nasa.gov/\">JPL-Caltech</a>,
|
306
|
+
\n<a href=\"http://dawn.igpp.ucla.edu/\">UCLA</a>,\nMPS/DLR/IDA\n</center>
|
307
|
+
<p> \n\n<b> Explanation: </b> \nWhat created this large mountain on asteroid
|
308
|
+
Ceres?\n\nNo one is yet sure.\n\nAs if in anticipation of today being \n<a
|
309
|
+
href=\"http://www.asteroidday.org/\">Asteroid</a> \n<a href=\"https://en.wikipedia.org/wiki/Asteroid_Day\">Day</a>
|
310
|
+
on Earth, the robotic spacecraft \n<a href=\"http://dawn.jpl.nasa.gov/\">Dawn</a>
|
311
|
+
in orbit around Ceres took the best yet image of an unusually tall mountain
|
312
|
+
on the Asteroid Belt's largest asteroid.\n\nVisible at the top of the \n<a
|
313
|
+
href=\"http://www.nasa.gov/jpl/pia19578/dawn-survey-orbit-image-10\"\n>featured
|
314
|
+
image</a>, the exceptional mountain rises about \nfive kilometers up from
|
315
|
+
an area that otherwise appears pretty level.\n\nThe <a href=\"http://photojournal.jpl.nasa.gov/catalog/PIA19578\"\n>image</a>
|
316
|
+
was taken about two weeks ago from about 4,400 kilometers away. \n\nAlthough
|
317
|
+
<a href=\n\"http://www.slate.com/blogs/bad_astronomy/2015/06/22/ceres_dawn_images_reveal_a_5_km_tall_mountain.html\"\n>origin
|
318
|
+
hypotheses for the mountain</a> include volcanism, impacts, and plate tectonics,
|
319
|
+
clear evidence backing any of these is currently lacking. \n\nAlso visible
|
320
|
+
\n<a href=\"ap150610.html\">across Ceres'</a> surface are some enigmatic light
|
321
|
+
areas: \n<a href=\"ap150514.html\">bright spots</a> whose origin and composition
|
322
|
+
that also \nremain an \n<a href=\"http://i.ytimg.com/vi/OIamIdHV37I/maxresdefault.jpg\">active
|
323
|
+
topic of investigation</a>.\n\nEven though Dawn is expected to continue to
|
324
|
+
orbit Ceres, officially dubbed a \n<a href=\"https://en.wikipedia.org/wiki/Dwarf_planet\">dwarf
|
325
|
+
planet</a>, for millions of years, the \n<a href=\"https://www.youtube.com/watch?v=5UFTfwTxeEk\">hydrazine
|
326
|
+
fuel</a> used to point \n<a href=\"http://www.popsci.com/whats-next-dawn-mission-keri-bean\">Dawn's
|
327
|
+
communications</a> \nantenna toward Earth is expected to run out sometime
|
328
|
+
next year.\n\n\n<p> <center> \n<b> Tonight & tomorrow: </b> \n<a href=\"https://www.youtube.com/watch?v=_ppuCZR8Mkw\">See
|
329
|
+
Venus & Jupiter together after sunset</a> <br>\n<b> Tomorrow's picture: </b><a
|
330
|
+
href=\"ap150701.html\">star clouds</a>\n\n<p> <hr>\n<a href=\"ap150629.html\"><</a>\n|
|
331
|
+
<a href=\"archivepix.html\">Archive</a>\n| <a href=\"lib/apsubmit2015.html\">Submissions</a>
|
332
|
+
\n| <a href=\"lib/aptree.html\">Index</a>\n| <a href=\"http://antwrp.gsfc.nasa.gov/cgi-bin/apod/apod_search\">Search</a>\n|
|
333
|
+
<a href=\"calendar/allyears.html\">Calendar</a>\n| <a href=\"/apod.rss\">RSS</a>\n|
|
334
|
+
<a href=\"lib/edlinks.html\">Education</a>\n| <a href=\"lib/about_apod.html\">About
|
335
|
+
APOD</a>\n| <a href=\n\"http://asterisk.apod.com/discuss_apod.php?date=150630\">Discuss</a>\n|
|
336
|
+
<a href=\"ap150701.html\">></a>\n\n<hr><p>\n<b> Authors & editors: </b>\n<a
|
337
|
+
href=\"http://www.phy.mtu.edu/faculty/Nemiroff.html\">Robert Nemiroff</a>\n(<a
|
338
|
+
href=\"http://www.phy.mtu.edu/\">MTU</a>) &\n<a href=\"http://antwrp.gsfc.nasa.gov/htmltest/jbonnell/www/bonnell.html\"\n>Jerry
|
339
|
+
Bonnell</a> (<a href=\"http://www.astro.umd.edu/\">UMCP</a>)<br>\n<b>NASA
|
340
|
+
Official: </b> Phillip Newman\n<a href=\"lib/about_apod.html#srapply\">Specific
|
341
|
+
rights apply</a>.<br>\n<a href=\"http://www.nasa.gov/about/highlights/HP_Privacy.html\">NASA
|
342
|
+
Web\nPrivacy Policy and Important Notices</a><br>\n<b>A service of:</b>\n<a
|
343
|
+
href=\"http://astrophysics.gsfc.nasa.gov/\">ASD</a> at\n<a href=\"http://www.nasa.gov/\">NASA</a>
|
344
|
+
/\n<a href=\"http://www.nasa.gov/centers/goddard/\">GSFC</a>\n<br><b>&</b>
|
345
|
+
<a href=\"http://www.mtu.edu/\">Michigan Tech. U.</a><br>\n</center>\n</body>\n</html>\n"
|
346
|
+
http_version:
|
347
|
+
recorded_at: Tue, 30 Jun 2015 21:47:30 GMT
|
348
|
+
recorded_with: VCR 2.9.3
|