1
我試圖用刮機械化網頁,用以下結構CSS選擇器使用page.at:與機械化
<div id="searchResultsBox">
<div class="listings-wrap">
<div class="listings-header">
<div class="listing-cat">Category</div>
<div class="listing-name">Name</div>
</div>
<ul class="listings">
<li class="listing">
<a href="/ShowRatings.jsp?tid=1143052">
<span class="listing-cat">
<span class="icon"></span>
TEXT
</span>
<span class="listing-name">
<span class="main">TEXT</span>
<span class="sub">TEXT</span>
</span>
</a>
</li>
...
我想導航到<a>
HTML元素背後的頁面。現在,我有:
agent = Mechanize.new
page = agent.get("URL")
page = page.at('#searchResultsBox > div.listings-wrap > ul > li:nth-child(1) > a')
但它一直返回NIL(由puts page.class
驗證)。
我也嘗試使用sleep
來嘗試確保頁面在繼續之前有時間加載。
有什麼我做錯了嗎?我認爲使用CSS選擇器可以做到這一點。
你是怎麼得到HTML的?如果機械化無法找到該標籤,則選擇器錯誤或標籤實際上不存在於機械化世界中。添加'sleep'將無濟於事,因爲Mechanize抓取頁面,然後等待您告訴它要找到什麼元素;它不會遞歸地遍歷頁面並像瀏覽器那樣檢索所有內容,這也意味着如果頁面的部分被動態加載,那麼Mechanize將永遠不會看到它們。在命令行使用'nokogiri'來加載頁面,然後使用@ doc.at('#searchResultsBox> div.listings-wrap> ul> li:nth-child(1)> a')'看看它是否作品。 –
嘗試追蹤'page.at('div#searchResultsBox a')' –