سؤال

أحاول أن تتخلص من موقع الجدول مع ميكنة.أريد أن أتخلص من الصف الثاني.

عندما أركض :

agent.page.search('table.ea').search('tr')[-2].search('td').map{ |n| n.text }

أتوقع أن تتخلص من الصف بأكمله.ولكن بدلا من ذلك فقط كشط:["2011-02-17", "0,00"]

لماذا لا يتم إلغاء جميع الأعمدة في الصف, ولكن فقط العمود الأول والأخير?

زباث: /html/body/center/table/tbody/tr[2]/td[2]/table/tbody/tr[3]/td/table/tbody/tr[2]/td/table/tbody/tr[2]

مسار المغلق: طاولة كمبيوتر محمول من الفولاذ المقاوم للصدأ ، طاولة كمبيوتر محمول ، طاولة كمبيوتر محمول.إي تي بودي تر تد.المجموع

الصفحة مشابهة لهذا:

<table><table><table>
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="ea">
<tr>
    <th><a href="#">Date</a></th>
    <th><a href="#">One</a></th>    
    <th><a href="#">Two</a></th>    
    <th><a href="#">Three</a></th>     
    <th><a href="#">Four</a></th>    
    <th><a href="#">Five</a></th>        
    <th><a href="#">Six</a></th>        
    <th><a href="#">Seven</a></th>      
    <th><a href="#">Eight</a></th>
</tr>
<tr>
    <td><a href="#">2011-02-17</a></td>
    <td align="right">0</td>    
    <td align="right">0</td>    
    <td align="right">0,00</td>     
    <td align="right">0</td>    
    <td align="right">0</td>        
    <td align="right">0</td>    
    <td align="right">0</td>        
    <td align="right">387</td>      
    <td align="right">0,00</td>     <!-- FOV -->
    <td align="right">0,00</td>
</tr>
<tr>
    <td class="total">Ialt</td>
    <td class="total" align="right">0</td>  
    <td class="total" align="right">40</td>     
    <td class="total" align="right">0,46</td>   
    <td class="total" align="right">2</td>      
    <td class="total" align="right">0</td>        
    <td class="total" align="right">0</td>      
    <td class="total" align="right">0</td>        
    <td class="total" align="right">3.060</td>      
    <td class="total" align="right">0,00</td>       
    <td class="total" align="right">18,58</td>
</tr>
</table>
</table></table></table>
هل كانت مفيدة؟

المحلول

باستخدام رمز روبي التالي (https://gist.github.com/835603):

require 'mechanize'
require 'pp'

a = Mechanize.new { |agent|
  agent.user_agent_alias = 'Mac Safari'
}

a.get('http://binarymuse.net/table.html') do |page|
  pp page.search('table.ea').search('tr')[-2].search('td').map{ |n| n.text }
end

أحصل على الإخراج التالي:

["2011-02-17", "0", "0", "0,00", "0", "0", "0", "0", "387", "0,00", "0,00"]

نصائح أخرى

أود أن أوصي لك أن تترك ميكنة لأشياء أصعب من كشط صفحة.يمكنك استخدام نوكوجيري أكثر بساطة بكثير من استخدام ميكنة (ولكن فكورسي يمكنك أن تفعل ذلك معها) حيث يمكنك فقط الاستعلام الصفحة.

جربه!

هنا هو رابط إلى إجابة بخصوص نوكوجيري

أنا شخصيا استخدمت الميكنة عندما كنت بحاجة إلى إرسال نماذج وأشياء من هذا القبيل وإن كان هناك طن من الاستخدامات الأخرى لذلك!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top