Рубиновая паутина с селеном - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь почистить сайт, раздеть две разные вещи и напечатать их вместе.Название и описание PlayStation Trophies.

require 'selenium-webdriver'

  driver = Selenium::WebDriver.for(:chrome, options: options)

  driver.get('https://www.playstationtrophies.org/game/far-cry-4/trophies/')

  puts driver.title

  trophies = driver.find_elements(:class, 'link_ach')
  description = driver.find_elements(:class, 'ac3') 

  trophies.each do |trophy|
    description.each do |desc|
      puts trophy,desc.text.strip
     end
  driver.quit
end

Я могу раздеть их обоих по отдельности, но, пытаясь соединить их, все идет не так, как надо.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Итерации по трофеям и описанию здесь очень запутанные.У вас есть две отдельные коллекции / массивы, трофеи и описание.Затем вы использовали вложенный цикл и выход из драйвера внутри цикла.Таким образом, он будет отображать все описания под 1-й трофей.

Если вы хотите отобразить каждое описание под соответствующим трофеем, то вы можете сделать это:

puts driver.title

trophies = driver.find_elements(:class, 'link_ach')
descriptions = driver.find_elements(:class, 'ac3')
data_sets = trophies.zip(descriptions)

datasets.each do |trophy, description|
    puts trophy.text.strip, description.text.strip
end

driver.quit

Затем вы можете настроить отображаемый текст в путах в соответствии со своими потребностями.

0 голосов
/ 02 марта 2019

Я не совсем уверен, что вы подразумеваете под «ужасно неправильным», но мое лучшее предположение, основанное на том, что вы имеете в виду, что для trophy вы фактически выводите на экран проверку переменной trophy вместо экранастрокового значения.Итак, вы получаете много:

#<Selenium::WebDriver::Element:0x00007ff4b60e5eb8>

Я думаю, вы будете более довольны выводом, если напечатаете текстовые значения обоих Элементов:

puts "#{trophy.text.strip}\n #{desc.text.strip}"

Если это действительно такпроблему, которую вы видите, вы можете рассмотреть to_s против inspect в рубине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...