동일한 정보에 대해 ~ 10 개의 웹 사이트를 고치고 있으며, 현재 각기 독자적으로 작동하는 스크립트가 있습니다. 이 스크립트들은 모두 동일한 기반을 가지고 있습니다 (사용 가능한 페이지를 반복하고, 정보를 긁어 모으고, 저장합니다), 그러나 다른 속성들입니다.다른 속성을 가진 Ruby 스크래핑 코드 리펙토링
예를 들어,이 내가 두 페이지에서 author
요소를 추출하고있어 방법의 예는 다음과 같습니다
page.at('b[itemprop="author"]').children.text.strip
page.at('.author-username').text.strip
내 목표는 그래서 주요 논리는 클래스에 의해 처리됩니다이 리팩토링하는 것입니다,하지만 난 소스에 따라 위 추출기를 전달하는 방법을 알아내는 데 문제가 있습니다. 나는 pass CSS selectors as arguments 일 수 있다는 것을 알고 있지만 각 추출에 대한 몇 가지 추가 로직이 있음을 알 수 있습니다.
(이전 링크에서 설명한대로)이를 처리 할 수있는 별도의 방법이있을 수 있지만 ~ 10 개의 소스를 사용하면이 문제가 빨리 해결됩니다.
이 코드를 리팩토링하는 가장 좋은 방법은 무엇입니까?
답장을 보내 주셔서 감사합니다. 도움이됩니다. 문자열 ('[ 'children', 'text', 'strip']')을 통해 제공되는 메서드 호출을 어떻게 수행하는지 자세히 설명해 주시겠습니까? 예를 들어'attribute_1.children.text.strip'을 어떻게 실행합니까? – Manonthemoon
아, 알아 냈습니다. 각 메소드를 호출하기 위해'page.send ()'를 사용하고 있습니다. –
Manonthemoon
오른쪽. 그리고 정말로, 그 메소드 목록은 문자열이 아니라 기호가되어야합니다. 어느 쪽도 똑같이 작동해야하지만, 심볼은보다 효율적인 메모리입니다. –