2014-12-25 46 views
2

我正在編寫一個ruby腳本來搜索網頁。這裏是代碼:Ruby機械化:以編程方式在不知道鏈接名稱的情況下單擊鏈接

require 'mechanize' 

mechanize = Mechanize.new 
page = mechanize.get('http://www.example.com/) 
example_page = page.link_with(:text => 'example').click 
puts example_page.body 

上面的代碼工作正常。文本'example'((:text =>'example'))必須是頁面上的鏈接才能使代碼正常工作。但問題是,當我執行web搜索時(bing,yahoo,google,等等),數百個鏈接出現了,我怎樣才能以編程的方式點擊鏈接而不知道鏈接的確切名稱?我希望能夠點擊一個鏈接,如果鏈接的名稱部分(或完全)匹配一個文本,我。指定或點擊一個鏈接,如果它有一定的URL任何幫助,將不勝感激

+0

如果你已經知道的URL,爲什麼不直接去那個網址是什麼?無論如何,似乎你想收集所有的鏈接,過濾一些標準,並點擊那些滿足? – Amadan

+1

不要刮他們的前端頁面,而是使用他們的API。 –

+0

嘗試傳遞正則表達式而不是字符串,也許? – Adrian

回答

2

機械化具有正則表達式:

page.link_with(text: /foo/).click 
page.link_with(href: /foo/).click 

這裏是機械化條件的一般工作的鏈接和形式:

name: name_matcher 
id: id_matcher 
class: class_matcher 
search: search_expression 
xpath: xpath_expression 
css: css_expression 
action: action_matcher 
... 

如果你很好奇,這裏的Mechanize ElementMatcher code

+0

非常棒。謝謝。 –

相關問題