2014-12-23 41 views
2

我問我以前的問題在這裏:Python的爬蟲沒有找到特定的XPath

Xpath pulling number in table but nothing after next span

這個工作,我設法看到我在一個名爲XPath的檢查Firefox的插件需要的數字。結果如下所示。

enter image description here

,所以我知道我能找到這個號碼與此XPath,但試圖運行一個python scrpit時發現並保存它說,它無法找到它的數量。

try: 
    views = browser.find_element_by_xpath("//div[@class='video-details-inside']/table//span[@class='added-time']/preceding-sibling::text()") 
except NoSuchElementException: 
    print "NO views" 
    views = 'n/a' 
    pass 

我不是最好的做法,但我只是在試圖找到這個數字的時刻進行測試。我想知道是否需要改變xpath結尾的某些內容,比如.text,因爲xpath檢查程序通常會以不同的方式顯示結果。如下圖所示:

enter image description here

我需要使用我放棄,而不是在上面的圖片中,因爲我只想數量,而不是日期的一箇中的XPath。你可以在我之前的問題中看到部分源代碼。

在此先感謝!在這裏撓我的頭。

+0

任何人都想法任何人? – BubblewrapBeast

回答

1

find_element_by_xpath()中使用的xpath必須指向元素,而不是文本節點而不是屬性。這是一個關鍵的事情。

這裏最簡單的方法是:

  • 得到td的文本(父)
  • 得到span的文本(孩子)從父母的
  • 刪除孩子的文本

    代碼:

    span = browser.find_element_by_xpath("//div[@class='video-details-inside']/table//span[@class='added-time']") 
    td = span.find_element_by_xpath('..') 
    views = td.text.replace(span.text, '').strip() 
    
  • +0

    傳說,就這樣我可以學習。我們在這裏所做的是使用xpath來找到我們不想要的位,這是「跨度」。然後我們刪除了那個。但是我失去的位是span.find_element_by_xpath('..')..代表什麼。 – BubblewrapBeast

    +0

    @BubblewrapBeast'..'是一種使用'xpath'獲取元素父項的方法。 – alecxe

    +0

    非常感謝好友。 – BubblewrapBeast