Voici 5 erreurs courantes lors de l'utilisation de l'outil "Selenium" </ b> utile pour le web scraping.
Le sélénium est un joyau utile pour le grattage Web avec des opérations complexes.
Gemme pouvant être utilisée lors du scraping Web avec Ruby </ b>
--Nokogiri (basique) --Mécaniser (facile) --Selenium (Vous pouvez faire diverses choses en utilisant le navigateur)
Dans Nokogiri et Mechanize, les balises HTML et CSS sont spécifiées pour obtenir le contenu de la page. Avec Selenium, vous pouvez ouvrir un navigateur par programmation et effectuer des opérations simulées, ce qui vous permet d'effectuer un traitement complexe.
--Si vous devez vous connecter --Si vous dessinez une page avec JavaScript --Si vous souhaitez saisir des données
Ceci est utile lorsque vous ne pouvez pas obtenir les informations nécessaires en utilisant uniquement des balises HTML ou des sélecteurs CSS.
Diverses personnes ont résumé comment utiliser Selenium, alors jetez un œil là-bas.
[Ruby] Web scraping avec Chrome sur sélénium
Aide-mémoire sur le sélénium [Ruby]
#Installez les outils nécessaires pour utiliser Selenium
require 'selenium-webdriver'
#Lancez Selenium
driver = Selenium::WebDriver.for :chrome
Selenium::WebDriver::Error::SessionNotCreatedError (session not created: This version of ChromeDriver only supports Chrome version 75)
Dans Selenium, vous spécifiez le type de navigateur et déplacez la souris par programmation.
#Démarrer le sélénium
driver = Selenium::WebDriver.for :chrome
Si vous souhaitez utiliser Chrome, installez la même version du pilote Chrome que Chrome. Vous devez disposer du navigateur que vous souhaitez utiliser, tel que Firefox ou Chrome, installé dans votre environnement de développement.
Comment vérifier la version de Google Chrome </ b> Vérifiez la version dans Paramètres de Google Chrome> Aide> À propos de Google Chrome
Comment installer Chromedriver </ b> [Ruby] Web scraping avec Chrome sur sélénium
Si vous souhaitez le déployer et l'utiliser sur Heroku, vous devez également installer le pilote Google Chrome et Chrome sur Heroku. Vous devez également ajouter une option pour exécuter Chrome sans tête. Mettre le pilote Chrome et Chrome dans Heroku
[Gratuit] Chrome headless + sélénium fonctionne régulièrement sur heroku
Selenium::WebDriver::Error::InvalidArgumentError (invalid argument: 'url' must be a string)
#Ouvrir le lien
@url = 'https://www...'
driver.get(@url)
driver.get("#{@url)")
Est-ce inutile si l'intérieur de () est une variable ruby? J'étais en colère d'en faire une chaîne de caractères.
#Ouvrir le lien
driver.get('https://www...')
Selenium::WebDriver::Error::NoSuchElementError: no such element: Unable to locate element: {"method":"id","selector":"#entryBtn"}
Erreur qui se produit lorsqu'il n'y a pas d'élément correspondant à HTML / CSS. Vérifiez si vous pouvez spécifier correctement le nom de la classe, etc.
Spécifiez l'élément que vous souhaitez obtenir avec le sélecteur CSS.
#Installez les outils nécessaires pour utiliser nokogiri
require 'nokogiri'
require 'open-uri'
#Obtenir des éléments de page à l'aide de Nokogiri
html = Nokogiri::HTML(open('https://www.google.co.jp/'))
logo = html.css('#hplogo')
Spécifiez l'élément que vous souhaitez obtenir par type d'élément + nom d'élément.
#Installez les outils nécessaires à l'utilisation du sélénium
require 'selenium-webdriver'
#Démarrez Selenium et récupérez les éléments de la page
driver = Selenium::WebDriver.for :chrome
driver.find_element(:id, 'hplogo')
Avec le sélénium, vous n'avez pas besoin de "#".
Selenium::WebDriver::Error::StaleElementReferenceError (stale element reference: element is not attached to the page document)
Une erreur qui s'est produite lorsque je suis retourné dans le navigateur et que j'ai essayé d'opérer sur un élément qui se trouvait sur la page précédente.
#Installez les outils nécessaires à l'utilisation du sélénium
require 'selenium-webdriver'
#Lancez Selenium
driver = Selenium::WebDriver.for :chrome
#Obtenez l'URL de la page des détails de l'événement à partir de la page de la liste des événements
events = driver.find_elements(:class, 'eventItem')
#Aller à la page des détails de l'événement
for i in 0..events.size()-1
#Cliquez sur le bouton pour accéder à la page des détails de l'événement
events.find_element(:class, 'entryBtn').click()
#→ Une erreur se produit dans le deuxième traitement en boucle
#Retournez à la page précédente
driver.navigate.back
end
#Installez les outils nécessaires à l'utilisation du sélénium
require 'selenium-webdriver'
#Lancez Selenium
driver = Selenium::WebDriver.for :chrome
#Obtenez l'URL de la page des détails de l'événement à partir de la page de la liste des événements
events = driver.find_elements(:class, 'eventItem')
#Aller à la page des détails de l'événement
for i in 0..events.size()-1
#Le pilote ayant disparu lors du deuxième traitement de boucle et des suivants, spécifiez à nouveau le pilote.
events_in_loop = driver.find_elements(:class, 'prfItem')
#Cliquez sur le bouton pour accéder à la page des détails de l'événement
events_in_loop[i].find_element(:class, 'entryBtn').click()
#Retournez à la page précédente
driver.navigate.back
end
Si vous êtes dans une boucle, le pilote ne sera pas valide, vous devrez donc le remettre dans la boucle.
référence get StaleElementReferenceException error while using driver.navigate().back() in a loop in selenium
C'est une erreur de construction d'environnement qui semble "terminée".
`require': incompatible library version - /Users/cathy/Desktop/work/vagrant/Test/vendor/bundle/ruby/2.5.0/gems/pg-0.19.0/lib/pg_ext.bundle (LoadError)
Quand j'ai désinstallé gem, j'ai eu une autre erreur et je n'ai pas pu sortir ...
/Users/cathy/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- rubygems/core_ext/kernel_warn (LoadError)
Il semble que la cause en soit qu'il existe une description de require'selenium-driver 'même si le joyau de Selenium a disparu.
le fichier gem ne peut pas charger ce fichier
Je ne pouvais pas le résoudre même si j'essayais diverses choses, alors j'ai réussi à le faire fonctionner lorsque j'ai monté la version de Ruby.
J'ai trébuché lors de la mise à niveau de Ruby
Recommended Posts