쇼핑 페이지가 있으며 먼저 모든 기사를 링크로보고 싶습니다. 그 후에 각 링크의 콘텐츠를 크롤링하고 싶습니다. 그것은 나를 정확한 태그 또는 지역을 검색 할 수있는 가장 쉬운 방법이기 때문에 내가 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}"
을 넣으면 이미 링크를 볼 수 있으므로 작동합니다. 그러나, 나는 두 개 이상의 링크를 원하는 - 모든 문서 링크 -이 사용하고 있으므로 페이지 :
article_links.uniq { |link| link.uri }.map do |link| #no double entries
link.click
target_URL = page.uri + link.uri
puts "#{target_URL}"
end
문제는 그 UNIQ,지도, link.click, URI 같은 및 방법 그래서 돈에 대한 '를 page.search로 작업하십시오. 오류 예 :
undefined method `uri' for #<Nokogiri::XML::Attr:0x0055a7a4a7e440> (NoMethodError)
page.links_with(...)
으로 만 가능합니다. page.search
으로 여러 링크를 크롤링하려면 어떻게해야합니까?
배열에 링크를 저장하고 각 링크에서'agent.get'을 사용하여 반복적으로 시도해 보셨나요? links_array.each {| link | agent.get link}'? 나는 당신이 블록을 .get에 추가 할 수 있다고 생각한다. 나는 Mechanize를 시도하고 훨씬 더 쉽게 Watir로 전환 했으므로 Mechanize를 거의 알지 못합니다. 정의되지 않은 메서드'UNIQ 같은 – mjwatts