Ruby, Nokogiri 및 Mechanize로 상점을 크롤링하고 싶습니다.사이트를 크롤링하는 중복 항목을 방지하는 방법
2 개의 기사가 표시된 페이지에서 모든 기사의 주소가 .../p/...
으로 시작하므로이 내용을 article_links
에 저장합니다. 모든 /p/
링크가 표시되어야합니다. 이미 루프 전에 일어나는, 결국 각 링크가 중복되고,
agent = Mechanize.new
page = agent.get(exampleshop.com)
article_links = page.links_with(href: %r{.*/p/})
article_links.map do |link|
article = link.click
target_URL = page.uri + link.uri #full URL
puts "#{target_URL}"
end
#crawling stuff on /p/ pages not included here
하지만, 그래서 나는 볼 수 :
일반적으로 나는 두 개의 주소를 볼 것입니다
exampleshop.com/p/productxy.html
exampleshop.com/p/productxy.html
exampleshop.com/p/productab.html
exampleshop.com/p/productab.html
저는 믿습니다 사이트 코드에 각 제품에 대해 두 개의 href가 /p/
인 것을 확인하십시오. 이 문제를 방지 할 수있는 좋은 방법이 있습니까? 또는 links_with
에서 Nokogiri CSS를 사용할 수 있습니까?
샘플 HTML없이 문제를 복제하기가 어렵습니다. "[mcve]"를 참조하십시오. 'map'은 이것에 대한 잘못된 반복자입니다. 'article_links'를 반복 할 때 수정 된 값을 지정할 필요가 없다면'each'를 사용해야합니다. 'map'은'target_URL'에 할당 된 것과 동일한 것을 반환 할 것이므로 코드의 스 니펫 (snippet)이 어떻게 사용되는지에 따라 중복 된 정보가 될 수 있습니다. –