[RUBY] [Missbrauch strengstens verboten] Ermitteln Sie die Anzahl der Aufrufe Ihres Qiita-Artikels

Ich habe bereits zweimal versucht, am Grafiksystem zu arbeiten, aber da die Daten selbst etwas subtil waren, möchte ich aus Rache den Übergang der Anzahl der Ansichten des auf Qiita veröffentlichten Artikels grafisch darstellen!

Die heutigen Ziele / Ergebnisse

Heute schreibe ich einen Code, um die Anzahl der Aufrufe des Artikels zu erhalten, den ich auf Qiita gepostet habe

Code und Dokumentation

1. Bereiten Sie den Scraping-Basiscode vor

https://qiita.com/itaya/items/262eec85e36763497664

Ich habe im obigen Artikel einmal über Qiitas Schaben geschrieben, also werde ich das im Grunde verwenden.

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

Hier ist der Code zum Anmelden.

2. Informieren Sie sich über Ihre Seite

Von hier aus erhalte ich diesmal eine Liste meiner Seiten und springe zu dieser Seite, um eine Sammlung von Ansichten zu erhalten

crawler.rb


driver.navigate.to 'https://qiita.com/itaya'
sleep 1
doc = Nokogiri::HTML.parse(driver.page_source, nil, 'utf-8')
doc.css('.AllArticleList__Item-mhtjc8-2').each do |div|
  driver.navigate.to "https://qiita.com" + div.css('.AllArticleList__ItemBodyTitle-mhtjc8-6')[0]['href']
  sleep 1
  article_doc = Nokogiri::HTML.parse(driver.page_source, nil, 'utf-8')
  p article_doc.css('.it-Header_pv')[0].text.split(" ")[0]
end

Ich fühle mich so.

3. Jetzt renn! !!

Wenn Sie dies ausführen

"99"
"56"
"218"
"212"
"120"
"107"
"288"
"112"
"213"
"93"
"111"
"128"
"131"
"149"
"383"
"801"
"4629"
"510"
"1086"

Sie können die Anzahl der Ansichten des Artikels auf der ersten Seite wie folgt anzeigen lassen. Allerdings kann ich die Anzahl der Aufrufe der Artikel auf der zweiten und den folgenden Seiten allein damit nicht ermitteln, daher möchte ich diesen Teil morgen machen ...

** * Bitte beachten Sie, dass zu viele Anfragen den Server überfordern !!! **

Sie können die API von Qiita normal verwenden ... https://qiita.com/api/v2/docs#%E6%8A%95%E7%A8%BF

Memo Täglich am 14. Tag veröffentlicht

Recommended Posts

[Missbrauch strengstens verboten] Ermitteln Sie die Anzahl der Aufrufe Ihres Qiita-Artikels
Holen Sie sich Ihre Versionsnummer in der Android-App
Holen Sie sich die ID der automatischen Nummerierung