Ich möchte mich vom letzten Mal an weiterentwickeln und einen Mechanismus erstellen, um automatisch auf Qiita zu posten.
Automatische Buchung in Qiita
Veröffentlichen Sie automatisch Ihren eigenen Entwurf von Qiita zum geplanten Datum
Ich habe bis zum letzten Mal mein Bestes mit Mechanisierung gegeben, aber ich konnte keinen Beitrag schreiben, also habe ich aufgegeben und beschlossen, das verbotene Selen zu verwenden ... Bitte beachten Sie, dass nur .....
Wenn Sie jedoch Selen verwenden, können Sie wirklich Gehirnmuskeln spielen, ohne Ihren Kopf zu benutzen ... Weil JS verwendet werden kann ...
Gemfile
gem 'selenium-webdriver'
Fügen Sie das oben genannte zu Ihrer Gemfile hinzu
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'] }) #Geheimmodus
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 = 'Mail Adresse'")
driver.execute_script("document.getElementsByName('password')[0].value = 'Passwort'")
driver.execute_script("document.getElementsByName('commit')[0].click()")
sleep 1
driver.navigate.to 'https://qiita.com/drafts'
Sie müssen sich nur anmelden und zur Entwurfsseite springen ... Schon ist das die Arbeit lol
Wenn Sie eine Funktion hinzufügen, um dort tatsächlich einen Artikel zu veröffentlichen und die Daten zu vergleichen ...
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'] }) #Geheimmodus
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 = 'Mail Adresse'")
driver.execute_script("document.getElementsByName('password')[0].value = 'Passwort'")
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(/Reservierungsbuchung/)
date = item['raw_body'].split('Reservierungsbuchung:')[1]
#Wenn es ein Reservierungsbuchungsdatum gibt
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
Dies ist abgeschlossen. Wenn Sie diesen Stapel jeden Tag gegen 20:00 Uhr ausführen, wird er automatisch um 20:00 Uhr veröffentlicht.
Versuchen Sie, cron auf dem Server einzurichten und auszuführen! !! !! !! (Ich werde den reservierten Beitrag in diesem Artikel versuchen lol)
→ Nein .. Ich habe einen wirklich dummen Fehler bemerkt ... Dieser Artikel wurde in der Perspektive moosiert, weil ich auch mit den Briefen an der Reservierungspost auf die Quelle gekommen bin ....
Reservierungspost: 2020-06-12
Recommended Posts