Je voudrais développer à partir de la dernière fois et créer un mécanisme pour publier automatiquement sur Qiita.
Publication automatique sur Qiita
Publiez automatiquement votre propre brouillon de Qiita à la date prévue
J'ai fait de mon mieux avec la mécanisation jusqu'à la dernière fois, mais je ne pouvais pas faire de message, alors j'ai abandonné et j'ai décidé d'utiliser le sélénium interdit ... Veuillez noter que seulement .....
Cependant, si vous utilisez du sélénium, vous pouvez vraiment jouer les muscles du cerveau sans utiliser votre tête ... Parce que JS peut être utilisé ...
Gemfile
gem 'selenium-webdriver'
Ajoutez ce qui précède à votre Gemfile
crawler.rb
require 'nokogiri'
require 'mechanize'
require 'selenium-webdriver'
def selemium_init
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
# caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => { args: ["--user-agent=#{ua}", 'window-size=1280x800', '--incognito'] }) #Mode secret
caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => {args: ["--headless","--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu", "--user-agent=#{ua}", 'window-size=1280x800']})
client = Selenium::WebDriver::Remote::Http::Default.new
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
end
driver = selemium_init
driver.navigate.to 'https://qiita.com/login'
driver.execute_script("document.getElementsByName('identity')[0].value = 'adresse mail'")
driver.execute_script("document.getElementsByName('password')[0].value = 'mot de passe'")
driver.execute_script("document.getElementsByName('commit')[0].click()")
sleep 1
driver.navigate.to 'https://qiita.com/drafts'
Tout ce que vous avez à faire est de vous connecter et d'accéder à la page de brouillon ... Déjà, c'est le travail lol
Si vous ajoutez une fonction pour y publier un article et comparer les dates ...
crawler.rb
require 'nokogiri'
require 'mechanize'
require 'selenium-webdriver'
def selemium_init
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
# caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => { args: ["--user-agent=#{ua}", 'window-size=1280x800', '--incognito'] }) #Mode secret
caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => {args: ["--headless","--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu", "--user-agent=#{ua}", 'window-size=1280x800']})
client = Selenium::WebDriver::Remote::Http::Default.new
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
end
driver = selemium_init
driver.navigate.to 'https://qiita.com/login'
driver.execute_script("document.getElementsByName('identity')[0].value = 'adresse mail'")
driver.execute_script("document.getElementsByName('password')[0].value = 'mot de passe'")
driver.execute_script("document.getElementsByName('commit')[0].click()")
sleep 1
driver.navigate.to 'https://qiita.com/drafts'
doc = Nokogiri::HTML.parse(driver.page_source, 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(/Publication de réservation/)
date = item['raw_body'].split('Publication de réservation:')[1]
#S'il y a une date d'enregistrement de réservation
if Date.today == Date.parse(date)
driver.navigate.to "https://qiita.com/drafts/#{item['item_uuid']}/edit?resume=true"
element = driver.find_element(:class, 'editorSubmit_dropdownToggle')
element.click
element = driver.find_elements(:class,'editorSubmit_dropdownItem')[2]
element.click
submit_element = driver.find_element(:class,'editorSubmit_submitBtnLabel')
submit_element.click
label_element = driver.find_element(:class,'creatingModal_label')
label_element.click
button_element = driver.find_elements(:class,'btn-primary')[-1]
button_element.click
end
end
end
C'est tout ce qu'on peut en dire. Si vous exécutez ce lot vers 20h00 tous les jours, il sera publié automatiquement à 20h00 ....
Essayez de configurer cron sur le serveur et de l'exécuter! !! !! !! (Je vais essayer le poste réservé dans cet article lol)
→ Non .. j'ai remarqué une erreur vraiment stupide ... Cet article a été mis en perspective car je suis aussi allé sur la source avec les lettres attachées au poste de réservation ....
Poste de réservation: 2020-06-12
Recommended Posts