Я сделал сценарий в рубине, который использует механизацию. Он отправляется на google.com, регистрирует вас и выполняет поиск изображений для кошек. Затем я хочу выбрать одну из ссылок на результаты со страницы, а затем сохранить изображение.Выбор ссылок «с механизацией в рубине
Моя проблема в том, что ссылки для всех результатов отображаются как пустые строки, поэтому я не уверен, как их указать и щелкнуть.
вот вывод pp страницы, чтобы вы могли видеть ссылки, о которых я говорю. Обратите внимание, что первая ссылка - это предлагаемые ссылки, я могу щелкнуть их, потому что у них есть заголовок «Прошло 24 часа», но вторая ссылка является фактическим результатом поиска, который я не могу щелкнуть.
#<Mechanize::Page::Link
"Past 24 hours"
"https://stackoverflow.com/search?q=cats&hl=en&gbv=1&ie=UTF8&tbm=isch&source=lnt&tbs=qdr:d&sa=X&ei=T8kDUu7aB4f8iwKZx4HoBg&ved=0CCQQpwUoAQ">
#<Mechanize::Page::Link
""
"http://www.google.com/imgres?imgurl=http://jasonlefkowitz.net/wp-content/uploads/2013/07/Cute-Cats-cats-33440930-1280-800.jpg&imgrefurl=http://jasonlefkowitz.net/2013/07/slideshow-20-cats-that-suck-at-reducing-tensions-in-the-israeli-palestinian-conflict/&usg=__1YEuvKE4A9r6IIRkcz9Pu6ahN8Q=&h=800&w=1280&sz=433&hl=en&start=1&sig2=ekqjELPNQsK-QQ2r-4TeeQ&zoom=1&tbnid=Xz9P1WD4o4TSlM:&tbnh=94&tbnw=150&ei=b8sDUq36Ge3figLCzoBY&itbs=1&sa=X&ved=0CCwQrQMwAA">
Теперь вот надрез на выходе:
page.links.each do |link|
puts link.text.
end
Какие будут отображаться ссылки на страницы.
More
Large
Face
Photo
Clip art
Line drawing
Animated
Past 24 hours
Past week
Reset tools
funny cats
cats and kittens
cats musical
cute cats
lots of cats
cats with guns
2
3
4
5
6
7
8
9
10
Next
Обратите внимание на все пробелы на экране? Это то, где пустые ссылки «» находятся на выходе страницы pp. У кого-нибудь есть идеи о том, как я могу нажать на него?
Вот код сценария.
require 'mechanize'
agent = Mechanize.new
page = agent.get('https://google.com')
page = agent.page.link_with(:text => 'Sign in').click
# pp page
sign_in = page.form() ##leave empty = nil
sign_in.Email = '10halec'
sign_in.Passwd = 'password'
page = agent.submit(sign_in)
page = agent.page.link_with(:text => 'Images').click
search = page.form('f')
search.q = 'cats'
page = agent.submit(search)
# pp page
# agent.page.image_with(:src => /imgres?/).fetch.save
page = agent.page.link_with(:text => '').click
# pp page
# page.links.each do |link|
# puts link.text
# end
pp page
def save filename = nil
filename = find_free_name filename
save! filename
end
Опубликовать соответствующий html на странице, с которой вы столкнулись. – 7stud