Я сделал скрипт на рубине, который использует механизацию. Он переходит на google.com, регистрирует вас и выполняет поиск изображений для кошек. Далее я хочу выбрать одну из ссылок результатов со страницы, а затем сохранить изображение.
Моя проблема в том, что ссылки для всех результатов отображаются как пустые строки, поэтому я не уверен, как указать и щелкнуть их.
вот вывод страницы pp, чтобы вы могли видеть ссылки, о которых я говорю. Обратите внимание, что первая ссылка — это рекомендуемые ссылки, я могу нажать на них, потому что у них есть заголовок «Последние 24 часа», но вторая ссылка — это фактический результат поиска, на который я не могу нажать.
#<Mechanize::Page::Link
"Past 24 hours"
"/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