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

7日目

今回からまた、新しいものを作りたいと思います。
この毎日投稿なのですが基本的に前日くらいにかきあげて、それを次の日の20時とかに手動で投稿してるのですが、普通に投稿し忘れたりするので自動化できれば...と常に思っていたのでそちらを作りたいと思います。
一旦今日のところは自分のページにログインする部分の処理を書きたいと思います。

【技術テーマ】

Qiitaのスクレイピング

言語

  • Ruby

目標成果物

Qiitaにログインするコードを書く

コードと資料

ログイン処理の実装

前回同様ログイン系の処理なのでmechanizeを使います。

Gemfile

source 'https://rubygems.org/'

gem 'nokogiri'
gem 'mechanize'

crawler.rb

crawler.rb
require 'nokogiri'
require 'mechanize'

agent = Mechanize.new
login_page = agent.get("https://qiita.com/login")

doc = Nokogiri::HTML.parse(login_page.body, nil, 'utf-8')
token =  doc.css('.loginSessionsForm')[0].css('input')[0]['value']
agent.post("https://qiita.com/login",{
  identity: 'メールアドレス',
  password: 'パスワード',
  authenticity_token: token
})

tokenが無いと500で起こられてしまったのでログインページで取得しておいてそれをpostしてあげます。
試しにこのしたに

page = agent.get("https://qiita.com/drafts/9854bdc1a4086754e4ab")
doc = Nokogiri::HTML.parse(page.body, nil, 'utf-8')
p doc

とか書いて下書きページにいくと下書きページが取得できていることがわかります。
https://qiita.com/drafts/9854bdc1a4086754e4ab
は動的な値なのかもしれないので要検討ですが....

一旦今日のところはこれで完了です。
(QiitaにQiitaのスクレイピングについて載せたら消されるのだろうか...🤔)

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?