簡體   English   中英

具有中間元素的XPath for LXML

[英]XPath for LXML with Intermediary Element

我正在嘗試使用python和LXML抓取一些頁面。 我的測試頁是http://www.sarpy.com/oldterra/prop/PDisplay3.asp?ParamValue1=010558233

我對大多數XPath都很滿意。 例如,

tree.xpath('/html/body/table/tr[1]/td[contains(text(), "Sales Information")]/../../tr[3]/td[1]/text()')

成功地給我列出了第一筆交易的日期。 我還有其他幾件。 但是,我無法獲得銷售日期下方列出的B&P。 例如,第一次銷售的B&P是200639333。

我注意到在頁面結構中,在B&P項目的tr之前有一個form元素。 由於它是下一個表行,因此我嘗試按以下方式增加tr索引:

tree.xpath('/html/body/table/tr[1]/td[contains(text(), "Sales Information")]/../../tr[4]/td[1]/text()')

返回:

['\r\n           ']

由於換行符和br的子元素以及字段中的輸入,我嘗試將text()變成text()[1],text()[2]等,但是沒有運氣。

我試圖將路徑基於相鄰的表單,如下所示:

tree.xpath('/html/body/table[7]/form[@action="../rod/ImageDisplay.asp"]/following-sibling::tr/td[1]/text()')

沒運氣。

我認為存在兩個潛在問題:可能破壞索引模式的中間表單元素和空白。 我將感謝您提供任何糾正此xpath的幫助。

您要查找的<tr><form> ,而不是其同級,請嘗試-

tree.xpath('/html/body/table/tr[1]/td[contains(text(), "Sales Information")]/../../form[1]/td[1]/text()')

這可能會使您具有大量空白的200639333

要么 -

tree.xpath('/html/body/table[7]/form[@action="../rod/ImageDisplay.asp"]/tr[1]/td[1]/text()')

對於所有此類元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM