私はショップページを持っており、最初にすべての記事をリンクしたいと思っています。その後、各リンクのコンテンツをクロールしたいそれは私が正確なタグやエリアを検索するための最も簡単な方法ですので、私はCSSを使用して検索を使用してい機械化page.searchはlink.clickメソッドとは動作しません
agent = Mechanize.new
page = agent.get(page_URL)
article_links = page.search('div.sklep-produkt h3 a').attr('href')
次のように私はリンクを取得しています。もし私がputs "#{article_links}"
を置くと、私はすでにリンクを見ることができるので、それは働いている。問題はそのドンのuniqは、マップ、link.click、URIなどのようなメソッド」です
article_links.uniq { |link| link.uri }.map do |link| #no double entries
link.click
target_URL = page.uri + link.uri
puts "#{target_URL}"
end
:ページからので、私はこれを使用している - すべての記事のリンク - しかし、私は複数のリンクをしたいですpage.searchで作業します。エラー例:
undefined method `uri' for #<Nokogiri::XML::Attr:0x0055a7a4a7e440> (NoMethodError)
page.links_with(...)
でのみ可能です。 page.search
で複数のリンクをクロールするにはどうすればよいですか?
あなたは配列にリンクを格納してから、それを 'link.array.each {| link | agent.get link} '?私は '.get'にブロックを追加することもできると思います。私はMechanizeを試して、はるかに簡単にWatirに切り替えるので、Mechanizeをほとんど知りません。 – mjwatts