diff --git a/lib/meta_inspector/parsers/images.rb b/lib/meta_inspector/parsers/images.rb
index 5f5ada1f..835a63d8 100644
--- a/lib/meta_inspector/parsers/images.rb
+++ b/lib/meta_inspector/parsers/images.rb
@@ -35,7 +35,7 @@ def owner_suggested
# filtered for images that are more square than 10:1 or 1:10
def largest()
@larget_image ||= begin
- img_nodes = parsed.search('//img')
+ img_nodes = parsed.search('//img').select{ |img_node| img_node['src'] }
sizes = img_nodes.map { |img_node| [URL.absolutify(img_node['src'], base_url), img_node['width'], img_node['height']] }
sizes.uniq! { |url, width, height| url }
if @download_images
diff --git a/spec/fixtures/malformed_image_in_html.response b/spec/fixtures/malformed_image_in_html.response
new file mode 100644
index 00000000..08b2b974
--- /dev/null
+++ b/spec/fixtures/malformed_image_in_html.response
@@ -0,0 +1,23 @@
+HTTP/1.1 200 OK
+Server: nginx/0.7.67
+Date: Fri, 18 Nov 2011 21:46:46 GMT
+Content-Type: text/html
+Connection: keep-alive
+Last-Modified: Mon, 14 Nov 2011 16:53:18 GMT
+Content-Length: 4987
+X-Varnish: 2000423390
+Age: 0
+Via: 1.1 varnish
+
+
+
+ An example page
+
+
+
+
+
+
+
+
+
diff --git a/spec/meta_inspector/images_spec.rb b/spec/meta_inspector/images_spec.rb
index abee3c61..d64ac3d6 100644
--- a/spec/meta_inspector/images_spec.rb
+++ b/spec/meta_inspector/images_spec.rb
@@ -88,6 +88,13 @@
expect(page.images.best).to eq("http://example.com/100x100")
end
+
+ it "should find image when some img tag has no src attribute" do
+ page = MetaInspector.new('http://example.com/malformed_image_in_html')
+
+ expect(page.images.best).to eq("http://example.com/largest")
+ end
+
end
describe "images.owner_suggested" do
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index e5ec441a..f6e6474f 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -36,6 +36,7 @@ def fixture_file(filename)
# Used to test largest image in page logic
FakeWeb.register_uri(:get, "http://example.com/largest_image_in_html", :response => fixture_file("largest_image_in_html.response"))
FakeWeb.register_uri(:get, "http://example.com/largest_image_using_image_size", :response => fixture_file("largest_image_using_image_size.response"))
+FakeWeb.register_uri(:get, "http://example.com/malformed_image_in_html", :response => fixture_file("malformed_image_in_html.response"))
FakeWeb.register_uri(:get, "http://example.com/10x10", :response => fixture_file("10x10.jpg.response"))
FakeWeb.register_uri(:get, "http://example.com/100x100", :response => fixture_file("100x100.jpg.response"))