0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Qiitaに予約投稿する仕組みを作る【下書き取得編】 ~1日10行コーディング 〜~

Posted at

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とかに頼るかもしれない....

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?