我用 ruby 编写了一个使用 mechanize 的脚本。它会转到 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