8日目
前回に引き続きQiitaの取得部分を作成します。
【技術テーマ】
Qiitaの下書きスクレイピング
言語
- Ruby
目標成果物
Qiitaの自分の下書き一覧を取得する
コードと資料
下書き取得の実装
前回同様ログイン系の処理なのでmechanizeを使います。
crawler.rb
crawler.rb
page = agent.get("https://qiita.com/drafts")
doc = Nokogiri::HTML.parse(page.body, nil, 'utf-8')
json = JSON.parse(doc.css('.js-react-on-rails-component')[1].inner_html)
json['creating_draft_items'].each do |item|
if item['raw_body'].match(/予約投稿/)
id = item['item_uuid']
title = item['title']
raw_body = item['raw_body']
tags = item['tag_notation'].split(' ')
agent.get("https://qiita.com/drafts/#{id}")
tag_data = []
tags.each do |tag|
tag_data.push({name:tag,versions: []})
end
end
end
前回から追加&修正で上記の文を追加します。
上のコードでは下書き情報の一覧を取得し、その中に予約投稿という文言があったらその情報を取得するということをしています。
前回下書きの取得部分でURLをIDかなにか指定していたのですが/draftsでリダイレクトされるのでこれでいけます。
【次回】
いよいよ投稿部分を作ろうと思うのですが、思ったより苦戦しそうで....
もしかしたらseleniumとかに頼るかもしれない....