[英]How to click link in Mechanize and Nokogiri?
我正在使用Mechanize來抓取Google Wallet的訂單數據。 我正在捕獲第一頁的所有數據,但是,我需要自動鏈接到后續頁面以獲取更多信息。
#purchaseOrderPager-pagerNextButton將移動到下一頁,這樣我就可以獲取更多要捕獲的記錄。 元素看起來像這樣。 我需要點擊它繼續前進。
<a id="purchaseOrderPager-pagerNextButton" class="kd-button small right"
href="purchaseorderlist?startTime=0&...
;currentPageStart=1&currentPageEnd=25&inputFullText=">
<img src="https://www.gstatic.com/mc3/purchaseorder/page-right.png"></a>
但是,當我嘗試以下操作時出現錯誤:
next_page = @orders_page.search("#purchaseOrderPager-pagerNextButton")
next_page.click
錯誤:
undefined method `click' for #<Nokogiri::XML::NodeSet:0x007f9019095550> (NoMethodError)
click
是Mechanize
類的一種方法。
請嘗試以下表格。
next_page = @orders_page.at("#purchaseOrderPager-pagerNextButton")
mechanize_instance.click(next_page)
注意將mechanize_instance
替換為實際變量。
你的#search
不起作用,因為#search
給出了Nokogiri::XML::NodeSet
實例。 NodeSet是節點的集合。 但在你的情況下, next_page
是一個NodeSet集合,它只包含一個元素。 first
會給你Nokogiri::XML::Node
,它也是一個Nokogiri::XML::Element
。
寫如下:
next_page = @orders_page.search("#purchaseOrderPager-pagerNextButton").first
或者更好地使用#at
方法。
next_page = @orders_page.at("#purchaseOrderPager-pagerNextButton")
現在#click
是Mechanize::Page::Link
實例的一種方法。 打開來源:
# File lib/mechanize/page/link.rb, line 29
def click
@mech.click self
end
這是完整的代碼: -
next_page = @orders_page.at("#purchaseOrderPager-pagerNextButton")
# mech is your Mechanize object.
next_link = Mechanize::Page::Link.new( next_page, mech, @orders_page )
next_link.click
Mechanize#click
允許您提供一個字符串,其中包含要點擊的錨點 / 按鈕的文本以及Nokogiri::XML::Node
。 所以我們可以這樣做:
mech.click next_page
讓我們看看為什么上面的代碼可以工作:
referer = current_page()
href = link.respond_to?(:href) ? link.href :
(link['href'] || link['src'])
get href, [], referer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.