我正在嘗試從網格中的目錄中抓取應用程式 URL:
<div id="mas-apps-list-tile-grid" class="mas-app-list">
<div class="solution-tile-container">
<div class="solution-tile-content-container">
<a href="url.com/app/345">
<div class="solution-tile-container">
<div class="solution-tile-content-container">
<a href="url.com/app/567">
... and so on
這是我的 2 行 Watir 代碼,它們應該創建一個包含頁面中所有 URL 的陣列:
company_listings = browser.div(id: 'mas-apps-list-tile-grid')
companies = company_listings.map { |div| div.a.href }
但不是帶有 URL 的陣列,而是 'companies' 回傳:
#<Watir::Map: located: false; {:id=>"mas-apps-list-tile-grid", :tag_name=>"div"} --> {:tag_name=>"map"}>
我究竟做錯了什么?
uj5u.com熱心網友回復:
a的#map方法Watir::Element(或Watir::Div在這種情況下特別是)回傳一個Watir::Map元素。這用于<map>在頁面上定位標簽/元素。
相反,#mapa 的方法Watir::ElementCollection將遍歷每個匹配的元素。這就是缺少的。
你有幾個選擇。如果你想要網格中的所有鏈接,最直接的方法是創建一個#links或#as元素集合:
company_grid = browser.div(id: 'mas-apps-list-tile-grid')
company_hrefs = company_grid.links.map { |a| a.href }
如果您只關心某些鏈接,則需要使用鏈接的父級來縮小范圍。例如,也許它只是位于“solution-tile-content-container”div 中的鏈接:
company_grid = browser.div(id: 'mas-apps-list-tile-grid')
company_listings = company_grid.divs(class: 'solution-tile-content-container')
company_hrefs = company_listings.map { |div| div.a.href }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/507562.html
