하루 10 라인 코딩 ~ 스크래핑 환경 구축 편 ~
개요
지금부터 매일 10 줄 정도의 소스 코드를 게시하고 싶습니다.
첫날
【테마】
스크래핑
언어
목표 아티팩트
첫날이라고 하는 것으로 너무 과장하지 않고, 제일 친숙한 스크래핑을 하는 코드를 써 가려고 생각합니다.
확실히 생각했던 곳에서, 이번 시즌의 추천 애니메이션을 알고 싶다고 생각했기 때문에
htps //w w. 오, 이것. jp/
이 사이트에서 이번 시즌의 상위 애니메이션을 얻고 싶습니다.
(조사하면 좋겠다든가, 말하지 마세요...)
코드 및 자료
1. 우선 이것의 이번 시즌 일람 페이지로 날아갑니다.
2. http 통신을 본 바 API라든지가 아니라 HTML이 보통으로 떨어지고 있을 것 같기 때문에, 그쪽의 통신을 curl로 카피합니다.
3. 신 사이트 curl-to-ruby 을 사용하여 조금 전의 curl을 루비 코드로 변환합니다.
4. 그 결과가 이쪽(파일명 crawler.rb)
crawler.rb
require 'net/http'
require 'uri'
uri = URI.parse("https://www.anikore.jp/chronicle/2020/spring/ac:tv/")
request = Net::HTTP::Get.new(uri)
request["Authority"] = "www.anikore.jp"
request["Cache-Control"] = "max-age=0"
request["Upgrade-Insecure-Requests"] = "1"
request["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36"
request["Sec-Fetch-Dest"] = "document"
request["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
request["Sec-Fetch-Site"] = "same-origin"
request["Sec-Fetch-Mode"] = "navigate"
request["Sec-Fetch-User"] = "?1"
request["Referer"] = "https://www.anikore.jp/"
request["Accept-Language"] = "ja,en-US;q=0.9,en;q=0.8,zh-TW;q=0.7,zh;q=0.6"
request["Cookie"] = "anikore=vr4e4jp9u83qpe76nb5jf2dm35; optimizelyEndUserId=oeu1591020303990r0.9278880352532264; optimizelySegments=%7B%225639900384%22%3A%22gc%22%2C%225644680362%22%3A%22direct%22%2C%225653460252%22%3A%22false%22%7D; optimizelyBuckets=%7B%7D; _ga=GA1.2.1594135381.1591020306; __gads=ID=8dec67eec678ab98:T=1591020306:S=ALNI_Mam9k84TCb2IJVyBUucjbUoYYIgsQ; _gid=GA1.2.1570502140.1591280281; _gali=page-top; _gat=1"
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
이 시점에서 10 줄을 가볍게 초과했습니다 ...
5. 이 HTML 파일을 Ruby의 nokogiri로 퍼스하고 싶기 때문에 「Gemfile」라고 하는 것을 준비해 아래의 기술을 합니다.
source 'https://rubygems.org'
gem 'nokogiri'
이 상태에서 터미널을 시작하고
bundle install --path .bundle
을 실행합니다.
6. 설마 오류
오랜만에 노기리를 넣으려고 하면 평소에 화가 나서...
세상 뭐든지 생각대로 가는 것은 아닙니다.
Fetching gem metadata from https://rubygems.org/.................
Resolving dependencies...
Using bundler 1.17.2
Fetching mini_portile2 2.4.0
Installing mini_portile2 2.4.0
Fetching nokogiri 1.10.9
Installing nokogiri 1.10.9 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/itayayuichiro/Documents/src/crawler/qiita_crawler/.bundle/ruby/2.6.0/gems/nokogiri-1.10.9/ext/nokogiri
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r
./siteconf20200604-4813-yjwd2f.rb extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/include/ruby.h
You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.
extconf failed, exit code 1
Gem files will remain installed in /Users/itayayuichiro/Documents/src/crawler/qiita_crawler/.bundle/ruby/2.6.0/gems/nokogiri-1.10.9 for inspection.
Results logged to /Users/itayayuichiro/Documents/src/crawler/qiita_crawler/.bundle/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/nokogiri-1.10.9/gem_make.out
An error occurred while installing nokogiri (1.10.9), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.10.9' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
nokogiri
우선 이 사이트
를 참고로 아래의 4명령을 실행해 보겠습니다.
$ brew tap homebrew/dupes
$ brew install libxml2 libxslt libiconv
$ brew link --force libxml2 ##--force--オプションを付けてインストール
$ brew link --force libxslt ##--force--オプションを付けてインストール
생각했지만 첫 번째 행을 실행했을 때 오류가 발생했습니다 ...
Updating Homebrew...
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
하지만 그 후의 처리가 끝났으므로 우선 무시하고 진행해 본다.
→ 다음 명령을 치면 좋지 않았기 때문에
xcode-select --install
여기 실행
설치에 시간이 걸릴 것 같기 때문에 내일에 계속됩니다 ....
Reference
이 문제에 관하여(하루 10 라인 코딩 ~ 스크래핑 환경 구축 편 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/itaya/items/c5dd82efb7734338a6a9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)