루비의 49일: 35일차 - 웹 스크래핑
3683 단어 ruby
이제 우리는 HTTP와 Ruby에서 HTTP 요청을 만드는 방법에 대해 조금 알게 되었으므로 오늘은 그 지식을 사용하여 웹을 스크랩하는 방법에 대해 논의할 것입니다!
웹 스크래핑은 웹에서 리소스를 가져오고 해당 웹사이트에서 일부 콘텐츠를 제공하는 코드를 작성하는 곳입니다. API 사용에 대한 대안이며(자세한 내용은 내일 설명) 사용 가능한 API가 없을 때 자주 사용됩니다.
tl;dr 오늘의 리소스는 DEV 커뮤니티 회원이자 친구인 Sylwiathis excellent blog post에서 가져왔습니다.
.ltag__user__id__283021 .follow-action-button {
배경색: #8b82d0 !중요;
색상: #53efe7 !중요;
테두리 색상: #8b82d0 !중요;
}
실비아 바르가스 팔로우
I teach React, Redux, JavaScript, Ruby, Rails at Flatiron School | I care about web accessible and inclusive tech | she/her
HTTP 요청하기
어제를 기억한다면
net/http
라이브러리를 사용하여 HTTP 요청을 했습니다. 오늘은 표준 Ruby 코어 유틸리티의 일부인 open-uri
를 사용할 것입니다.require "open-uri"
html = open("https://en.wikipedia.org/wiki/Douglas_Adams")
위의 예는 훨씬 더 압축된 것을 제외하고는 어제 블로그 게시물을 가져오는 것과 매우 유사합니다. 변수
html
는 이제 Douglas Adams에 대한 Wikipedia 페이지의 HTML 콘텐츠를 보유합니다.다음 단계는 해당 HTML을 구문 분석하는 것입니다.
HTML 구문 분석
HTML 구문 분석에 도움이 되는 인기 있는 gem은 Nokogiri 입니다. 보석은 매우 강력하며, 그로 인해 더 복잡한 응용 프로그램을 구축함에 따라 보석의 복잡성이 엄청나게 커질 수 있습니다.
우리의 경우 사용을 줄이려고 노력할 것입니다.
response = Nokogiri::HTML(html)
response
변수는 이제 Nokogiri::HTML::Document
객체를 포함합니다. 중첩된 리소스가 많은 해시처럼 구조화된 HTML입니다.이제 일부 데이터를 스크랩할 수 있는 구조의 HTML이 있습니다.
긁어모으세요
이 예에서는 Douglas Adams의 본문 텍스트만 가져옵니다.
Wikipedia 페이지에서 활용할 수 있는 일종의 식별자를 찾아서 그렇게 합니다. HTML은 웹사이트를 만드는 언어입니다. 우리가 논의하지는 않지만 언급할 필요가 있는 또 다른 언어는 CSS입니다. CSS는 웹사이트의 스타일을 지정하는 언어입니다. 페이지의 각 부분에는 스크랩하려는 부분을 식별하는 데 사용할 수 있는 일종의 CSS 태그가 있습니다.
Wikipedia 페이지의 경우 텍스트는
p
태그 안에 있습니다. #css
태그를 인수로 제공하는 Nokogirip
메서드를 사용하여 텍스트만 가져올 수 있습니다.text = html.css("p").text
이제 검사하면
text
Wikipedia의 Douglas Adams에 대한 전체 설명이 포함된 것을 볼 수 있습니다. 사이트를 성공적으로 스크랩했습니다!이에 대해 더 자세히 알고 싶다면 Sylwia's post을 적극 권장합니다. 그녀는 우리 형식이 제공하는 것보다 훨씬 더 자세히 설명합니다. 해시태그 #49daysofruby를 사용하여 학습 내용을 커뮤니티와 계속 공유하세요!
49 Days of Ruby의 다음 편을 위해 내일 다시 오세요! 해시태그를 사용하여 트위터에서 대화에 참여할 수 있습니다.
Reference
이 문제에 관하여(루비의 49일: 35일차 - 웹 스크래핑), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bengreenberg/49-days-of-ruby-day-35-web-scraping-199l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)