2012-04-05 9 views
15

पाने के लिए मशीनीकरण मैं इस कोडकैसे वर्तमान यूआरएल

require 'mechanize' 
@agent = Mechanize.new 
page = @agent.get('http://something.com/?page=1') 
next_page = page.link_with(:href=>/^?page=2/).click 

है आप देख सकते हैं इस कोड को अगले पृष्ठ पर जाने चाहिए।

next_pagehttp://something.com/?page=2

कैसे next_page के लिए वर्तमान यूआरएल पाने के लिए यूआरएल होना चाहिए?

उत्तर

22
next_page.uri.to_s 

http://www.rubydoc.info/gems/mechanize/Mechanize/Page/Link#uri-instance_method और http://ruby-doc.org/stdlib-2.4.1/libdoc/uri/rdoc/URI.html

देखें परीक्षण प्रयोजनों के लिए, मैं आईआरबी में निम्नलिखित किया:

require 'mechanize' 
@agent = Mechanize.new 

page = @agent.get('http://news.ycombinator.com/news') 
=> #<Mechanize::Page 
{url #<URI::HTTP:0x00000001ad3198 URL:http://news.ycombinator.com/news>} 
{meta_refresh} 
{title "Hacker News"} 
{iframes} 
{frames} 
{links 
    #<Mechanize::Page::Link "" "http://ycombinator.com"> 
    #<Mechanize::Page::Link "Hacker News" "news"> 
    #<Mechanize::Page::Link "new" "newest"> 
    #<Mechanize::Page::Link "comments" "newcomments"> 
    #<Mechanize::Page::Link "ask" "ask"> 
    #<Mechanize::Page::Link "jobs" "jobs"> 
    #<Mechanize::Page::Link "submit" "submit"> 
    #<Mechanize::Page::Link "login" "newslogin?whence=%6e%65%77%73"> 
    #<Mechanize::Page::Link "" "vote?for=3803568&dir=up&whence=%6e%65%77%73"> 
    #<Mechanize::Page::Link 
    "Don’t Be Evil: How Google Screwed a Startup" 
    "http://blog.hatchlings.com/post/20171171127/dont-be-evil-how-google-screwed-a-startup"> 
    #<Mechanize::Page::Link "mikeknoop" "user?id=mikeknoop"> 
    #<Mechanize::Page::Link "64 comments" "item?id=3803568"> 
    #<Mechanize::Page::Link "" "vote?for=3802515&dir=up&whence=%6e%65%77%73"> 
    # Omitted for brevity... 

next_page.uri 
=> #<URI::HTTP:0x00000001fa7818 URL:http://news.ycombinator.com/news2> 

next_page.uri.to_s 
=> "http://news.ycombinator.com/news2" 
+5

लिंक का यूआरएल है कि है, लेकिन लिंक के बाद वर्तमान यूआरएल पीछा किया जाता है (और पुनर्निर्देशन होता है) होगा: @ agent.page.uri.to_s – pguardiario

संबंधित मुद्दे