【無料】instagramのハッシュタグから画像を保存しまくるseleniumのコード
※seleniumを始めたい方向けにruby + selenium webdriverチュートリアルという記事もあります。。
こんにちわ。合同会社ベステンダンク代表の大浦です。
急に...急に...
急にTWICEの画像が大量に欲しくなりました!!!!
・・・すみません、取り乱しました。
さて、皆さんも急に画像が大量に欲しくなることがあると思います。
そんな時にサクッと動かせるやつ作りました。50行足らずです。
構成はこんな感じ
・windows 10
・ruby 2.3.3
・chromedriver最新
・selenium-webdriver最新
instagramはめちゃめちゃソースの変更があるので、明日には使えなくなるかもしれません。
class名とかのメンテナンスはご自分で行ってくださいね。
環境構築は私のブログに書いてあります。ご参考にどうぞ。
windowsならruby + selenium webdriverも環境設定は15分で終わる | katsulog
あと、画像保存用に証明書が必要なのでcacert.pemをコードと同ディレクトリに置いてください。
こちらからダウンロードできます。
ENV["SSL_CERT_FILE"] = "./cacert.pem"
require 'selenium-webdriver'
require 'open-uri'
opt = {}
opt['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/XXXXXXXXXXXXX Safari/XXXXXX Vivaldi/XXXXXXXXXX'
# 画像を保存したいハッシュタグ
hash_tag = "傳谷英里香"
# 保存する枚数
image_count = 10
FileUtils.mkdir_p("./images") unless FileTest.exist?("./images")
d = Selenium::WebDriver.for :chrome
wait = Selenium::WebDriver::Wait.new(:read_timeout => 120)
d.get("https://www.instagram.com/explore/tags/#{hash_tag}/")
wait.until{ d.find_elements(:xpath, '//*[@id="react-root"]/section/main/article/div[2]/div/div[1]/div[1]/a/div').size > 0 }
# 最新の1枚目をクリック
d.find_element(:xpath, '//*[@id="react-root"]/section/main/article/div[2]/div/div[1]/div[1]/a/div').click
i = 1
loop do
wait.until{ d.find_elements(:xpath, '//*[@class="PdwC2 _6oveC Z_y-9"]').size > 0 }
# videoだったらスキップ
if d.find_element(:xpath, '//*[@class="PdwC2 _6oveC Z_y-9"]').find_elements(:tag_name, 'video').size == 0
image_url = d.find_element(:xpath, '//*[@class="PdwC2 _6oveC Z_y-9"]').find_element(:class, 'FFVAD').attribute("src")
open("./images/#{i}.jpg", 'wb') do |output|
open(image_url,opt) do |data|
output.write(data.read)
end
end
d.find_element(:xpath, '//*[@class="HBoOv coreSpriteRightPaginationArrow"]').click
i += 1
if i == image_count + 1
break
end
else
d.find_element(:xpath, '//*[@class="HBoOv coreSpriteRightPaginationArrow"]').click
end
end
です。
「TWICEじゃないんかい!!」というツッコミお待ちしております。日本語でもそのままいけるのは便利ですねruby。
インスタに限らずこんな感じのものなら作れるのでお声がけください。
もちろん代金はいただきますけど。。
質問あればコメントいただければと思います。
では温かい年末年始をお過ごしくださいませ。
TWICE!!