[RUBY] [Abus strictement interdit] Obtenez le nombre de vues de votre article Qiita

J'ai essayé de travailler sur le système de graphes deux fois auparavant, mais comme les données elles-mêmes étaient un peu subtiles, j'aimerais tracer la transition du nombre de vues de l'article posté sur Qiita en guise de revanche!

Objectifs / livrables d'aujourd'hui

Aujourd'hui j'écris un code pour avoir le nombre de vues de l'article que j'ai posté sur Qiita

Code et documentation

1. Préparez le code de base de grattage

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

J'ai écrit une fois sur le grattage de Qiita dans l'article ci-dessus, donc je vais essentiellement l'utiliser.

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

Voici le code pour vous connecter.

2. Obtenez des informations sur votre page

À partir de là, cette fois, je vais obtenir une liste de mes pages et accéder à cette page pour obtenir une collection de vues

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

Je me sens comme cela.

3. Maintenant, cours! !!

Lorsque vous exécutez ceci

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

Vous pouvez ainsi obtenir le nombre de vues de l'article affiché sur la première page. Cependant, je ne peux pas obtenir le nombre de vues des articles de la deuxième page et des suivantes avec cela seul, alors j'aimerais faire cette partie demain ....

** * Veuillez noter que trop de requêtes submergeront le serveur !!! **

Vous pouvez utiliser l'API de Qiita normalement ... https://qiita.com/api/v2/docs#%E6%8A%95%E7%A8%BF

Note 14e jour affiché quotidiennement

Recommended Posts

[Abus strictement interdit] Obtenez le nombre de vues de votre article Qiita
Obtenez votre numéro de version dans l'application Android
Obtenez l'ID de la numérotation automatique