導航:首頁 > 編程語言 > pythonbinding

pythonbinding

發布時間:2022-09-30 20:01:23

❶ 普通人學python有什麼用

用途:

一、Web開發

Python的誕生歷史比Web還要早,由於Python是一種解釋型的腳本語言,開發效率高,所以非常適合用來做Web開發。

Python有上百種Web開發框架,有很多成熟的模板技術,選擇Python開發Web應用,不但開發效率高,而且運行速度快。

二、網路爬蟲

網路爬蟲是Python比較常用的一個場景,國際上google在早期大量地使用Python語言作為網路爬蟲的基礎,帶動了整個Python語言的應用發展。

如:從各大網站爬取商品折扣信息,比較獲取最優選擇;對社交網路上發言進行收集分類,生成情緒地圖,分析語言習慣;爬取網易雲音樂某一類歌曲的所有評論,生成詞雲;應用實在太多,幾乎每個人學習爬蟲之後都能夠通過爬蟲去做一些好玩有趣有用的事。

三、人工智慧

人工智慧的核心演算法大部分還是依賴於C/C++的,因為是計算密集型,需要非常精細的優化,還需要GPU、專用硬體之類的介面,這些都只有C/C++能做到。

而Python是這些庫的API binding,使用Python是因為CPython的膠水語言特性,要開發一個其他語言到C/C++的跨語言介面,Python是最容易得,比其他語言的門檻要低不少,尤其是使用Cython的時候。

四、數據分析

數據分析處理方面,Python有很完備的生態環境。「大數據」分析中涉及到的分布式計算、數據可視化、資料庫操作等,Python中都有成熟的模塊可以選擇完成其功能。對於Hadoop-MapRece和Spark,都可以直接使用Python完成計算邏輯,這無論對於數據科學家還是對於數據工程師而言都是十分便利的。

五、自動化運維

Python對於伺服器運維而言也有十分重要的用途。由於目前幾乎所有linux發行版中都自帶了Python解釋器,使用Python腳本進行批量化的文件部署和運行調整都成了Linux伺服器上很不錯的選擇。

(1)pythonbinding擴展閱讀

Python的優勢:

1、Python易於學習

相較於其它編程語言而言,Python更容易一些。Python 的語言沒有多少儀式化的東西,所以就算不是一個 Python 專家,也能讀懂它的代碼。通過實例來學習和教授 Python要比採取同樣的方式去接觸比方說 Ruby 或者 Perl 更加容易,因為 Python 的語法裡面條條框框以及特殊的處理場景要少得多。 它所專注的並非語言表現的豐富程度,而是你想要用你的代碼完成什麼。

2、它能用少量的代碼構建出很多功能

Python 能帶給所有開發者一種快速的學習體驗。通過實踐,可以在最多兩天之內輕松實現一個具備基礎功能的游戲。另外一些讓 Python 成為一門引人注目的編程語言的因素就是它的可讀性和高效性。

3、Python 多才多藝

Python應用場景廣泛,可被應用於如今你所能想得到的相當多的軟體開發和操作場景,目前已廣泛應用於人工智慧、雲計算開發、大數據開發、數據分析、科學運算、網站開發、爬蟲、自動化運維、自動化測試、游戲開發等領域,因此,只需要你將 Python 了解得更加深入一點點,就能讓你具備可以適應范圍更寬泛的工作角色的技能。

❷ python xpath解析返回對象怎麼處理

在進行網頁抓取的時候,分析定位html節點是獲取抓取信息的關鍵,目前我用的是lxml模塊(用來分析XML文檔結構的,當然也能分析html結構), 利用其lxml.html的xpath對html進行分析,獲取抓取信息。

首先,我們需要安裝一個支持xpath的python庫。目前在libxml2的網站上被推薦的python binding是lxml,也有beautifulsoup,不嫌麻煩的話還可以自己用正則表達式去構建,本文以lxml為例講解。

假設有如下的HTML文檔:

直接使用lxml處理:

1 import codecs2 from lxml import etree3 f=codecs.open("ceshi.html","r","utf-8")4 content=f.read()5 f.close()6 tree=etree.HTML(content)

etree提供了HTML這個解析函數,現在我們可以直接對HTML使用xpath了,是不是有點小激動,現在就嘗試下吧。

在使用xpath之前我們先來看看作為對照的jQuery和RE。

在jQuery里要處理這種東西就很簡單,特別是假如那個ul節點有id的話(比如是<ul id=』china』>):

$("#china").each(function(){...});

具體到此處是:

$("#leftmenu").children("h3:contains('text')").next("ul").each(function(){...});

找到id為leftmenu的節點,在其下找到一個內容包含為」text」的h3節點,再取其接下來的一個ul節點。

在python里要是用RE來處理就略麻煩一些:

block_pattern=re.compile(u"<h3>檔案</h3>(.*?)<h3>", re.I | re.S)
m=block_pattern.findall(content)
item_pattern=re.compile(u"<li>(.*?)</li>", re.I | re.S)
items=item_pattern.findall(m[0])for i in items: print i

那麼用xpath要怎麼做呢?其實跟jQuery是差不多的:

nodes=tree.xpath("/descendant::ul[@id='china']")

當然,現在沒有id的話也就只能用類似於jQuery的方法了。完整的xpath應該是這樣寫的(注意,原文件中的TAG有大小寫的情況,但是在XPATH里只能用小寫):

nodes=tree.xpath(u"/html/body/form/div[@id='leftmenu']/h3[text()='text']/following-sibling::ul[1]")

更簡單的方法就是像jQuery那樣直接根據id定位:

nodes=tree.xpath(u"//div[@id='leftmenu']/h3[text()='text']/following-sibling::ul[1]")

這兩種方法返回的結果中,nodes[0]就是那個「text」的h3節點後面緊跟的第一個ul節點,這樣就可以列出後面所有的ul節點內容了。

如果ul節點下面還有其他的節點,我們要找到更深節點的內容,如下的循環就是把這些節點的文本內容列出:

nodes=nodes[0].xpath("li/a")for n in nodes: print n.text

對比三種方法應該可以看出xpath和jQuery對於頁面的解析都是基於XML的語義進行,而RE則純粹是基於plain
text。RE對付簡單的頁面是沒有問題,如果頁面結構復雜度較高的時候(比如一堆的DIV來回嵌套之類),設計一個恰當的RE
pattern可能會遠比寫一個xpath要復雜。特別是目前主流的基於CSS的頁面設計方式,其中大部分關鍵節點都會有id――對於使用jQuery的頁面來說則更是如此,這時xpath相比RE就有了決定性的優勢。

附錄:基本XPATH語法介紹,詳細請參考XPath的官方文檔

XPATH基本上是用一種類似目錄樹的方法來描述在XML文檔中的路徑。比如用「/」來作為上下層級間的分隔。第一個「/」表示文檔的根節點(注意,不是指文檔最外層的tag節點,而是指文檔本身)。比如對於一個HTML文件來說,最外層的節點應該是」/html」。

同樣的,「..」和「.」分別被用來表示父節點和本節點。

XPATH返回的不一定就是唯一的節點,而是符合條件的所有節點。比如在HTML文檔里使用「/html/head/scrpt」就會把head里的所有script節點都取出來。

為了縮小定位范圍,往往還需要增加過濾條件。過濾的方法就是用「[」「]」把過濾條件加上。比如在HTML文檔里使用「/html/body/div[@id='main']」,即可取出body里id為main的div節點。

其中@id表示屬性id,類似的還可以使用如@name, @value, @href, @src, @class….


函數text()的意思則是取得節點包含的文本。比如:<div>hello<p>world</p><
/div>中,用」div[text()='hello']「即可取得這個div,而world則是p的text()。

函數position()的意思是取得節點的位置。比如「li[position()=2]」表示取得第二個li節點,它也可以被省略為「li[2]」。

不過要注意的是數字定位和過濾
條件的順序。比如「ul/li[5][@name='hello']」表示取ul下第五項li,並且其name必須是hello,否則返回空。而如果用
「ul/li[@name='hello'][5]」的意思就不同,它表示尋找ul下第五個name為」hello「的li節點。

此外,「*」可以代替所有的節點名,比如用」/html/body/*/span」可以取出body下第二級的所有span,而不管它上一級是div還是p或是其它什麼東東。


「descendant::」前綴可以指代任意多層的中間節點,它也可以被省略成一個「/」。比如在整個HTML文檔中查找id為「leftmenu」的
div,可以用「/descendant::div[@id='leftmenu']」,也可以簡單地使用「
//div[@id='leftmenu']」。

至於「following-sibling::」前綴就如其名所說,表示同一層的下一個節點。」following-sibling::*」就是任意下一個節點,而「following-sibling::ul」就是下一個ul節點。

❸ Python能用來做什麼

Python 語言主要有以下用途:
1) 簡單:Python 是一種代表簡單主義思想的語言。閱讀一個良好的 Python 程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格。Python 的這種偽代碼本質是其優點之一,使用戶能夠專注於解決問題而不是去搞明白語言本身。
2) 易學:Python 有極其簡單的語法,非常容易上手。
3) 免費、開源:Python 是 FLOSS(自由/開源軟體)之一。簡單來說,用戶可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS 是基於一個團體分享知識的概念,這也是為什麼 Python 如此優秀的原因之一:它由一群希望看到 Python 更加優秀的人創造,並被他們不斷改進。
4) 高層語言:使用 Python 語言編寫程序時,不用考慮如何管理程序使用的內存等底層細節。
5) 可移植性強:由於它的開源本質,Python 已經被移植在許多平台上。如果 Python 程序沒有使用依賴於系統的特性,那麼程序不用修改就可以在下述任意平台上面運行。這些平台包括 Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、Pocket PC 和 Symbian。
6) 解釋型語言:編譯型語言(如 C 或 C++)源程序從源文件(即 C 或 C++ 語言)轉換到二進制代碼(即 0 和 1)的過程通過編譯器和不同的標記、選項完成,當運行程序的時候,連接器把程序從硬碟復制到內存中並且運行。而 Python 程序不需要編譯成二進制代碼,直接從源代碼運行程序。
在計算機內部,Python 解釋器把源代碼轉換成位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。因此,用戶不再需要操心如何編譯程序、如何確保指定了正確的模塊或包文件等細節,所有這一切使得使用 Python 更加簡單。同時,由於只需要把 Python 程序拷貝到另外一台計算機上即可工作,這也使得 Python 程序更加易於移植。
7) 面向對象:Python 既支持面向過程的編程也支持面向對象的編程。在面向過程的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在面向對象的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他語言(如 C++ 和 Java)相比,Python 以一種非常強大又簡單的方式實現面向對象編程。
8) 可擴展性強:如果希望把一段關鍵代碼運行得更快或希望某些演算法不公開,可以使用 C 或 C++ 語言編寫這部分程序,然後在 Python 程序中調用它們。
9) 可嵌入性強:可以把 Python 嵌入 C/C++ 程序,從而向用戶提供腳本功能。
10) 豐富的擴展庫:Python 擴展庫很龐大,可以幫助處理包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV 文件、密碼系統、GUI(圖形用戶界面)、Tk 以及其他與系統有關的操作。只要安裝了 Python,所有這些功能都是可用的,這被稱作 Python 的「功能齊全」理念。除了擴展庫以外,還有許多其他高質量的庫,如 wxPython、Twisted 和 Python 圖像庫等。

❹ Python和人工智慧有什麼關系

提到人工智慧就一定會提到Python,有的初學者甚至認為人工智慧和Python是劃等號的,其實Python是一種計算機程序設計語言。是一種動態的、面向對象的腳本語言,開始時是用於編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用於獨立的、大型項目的開發。而人工智慧通俗講就是人為的通過嵌入式技術把程序寫入機器中使其實現智能化。顯然人工智慧和Python是兩個不同的概念。人工智慧和Python的淵源在於。就像我們統計數據或選擇用excel製作表格時,因為在需要用到加減乘除或者、函數等時,只需要套用公司就可以。因為SUM、AVERAGE等這樣的函數運行的背後,是C++/C#等語言已經編寫好了代碼,所以Excel只是工具和展現形式並不是它做計算。同理在學習人工智慧時Python只是用來操作深度學習框架的工具,實際負責運算的主要模塊並不依靠Python,真正起作用的是也是一大堆復雜的C++
/ CUDA程序。
深度學習人工智慧時,自己計算太復雜,還要寫C++代碼操作,這時程序員就想要不搞一套類似復雜的Excel配置表,直接搭建神經網路、填參數、導入數據,一點按鈕就直接開始訓練模型、得出結果。這個方法簡單實用可是神經網路搭建起來太復雜,需要填寫的參數太多,各種五花八門的選項也很難做成直觀的圖形工具。只能用一個類似Python的相對好用的語言,通過簡化的程序代碼來搭建神經網路、填寫參數、導入數據,並調用執行函數進行訓練。通過這種語言來描述模型、傳遞參數、轉換好輸入數據,然後扔到復雜的深度學習框架裡面去計算。那麼為什麼會選擇Python?科學家們很早就喜歡用Python實驗演算法,也善於使用numpy做科學計算,用pyplot畫數據圖。恰好Google內部用Python也非常多,所以採用Python也是必然的。除Python外,實際上TensorFlow框架還支持JavaScript、c++、Java、GO、等語言。按說人工智慧演算法用這些也可以。但是官方說了,除Python之外的語言不一定承諾API穩定性。所以人工智慧和Python就密不可分了。單說人工智慧的核心演算法,那是是完全依賴於C/C++的,因為是計算密集型,需要非常精細的優化,還需要GPU、專用硬體之類的介面,這些都只有C/C++能做到。所以某種意義上其實C/C++才是人工智慧領域最重要的語言。Python是這些庫的API
binding,要開發一個其他語言到C/C++的跨語言介面,Python是最容易的,比其他語言的ffi門檻要低不少,CPython的C
API是雙向融合的,可以直接對外暴露封裝過的Python對象,還可以允許用戶通過繼承這些自定義對象來引入新特性,甚至可以從C代碼當中再調用Python的函數。Python一直都是科學計算和數據分析的重要工具,Python是這些庫的API
binding,要開發一個其他語言到C/C++的跨語言介面,Python是最容易的,比其他語言的ffi門檻要低不少,CPython的C
API是雙向融合的,可以直接對外暴露封裝過的Python對象,還可以允許用戶通過繼承這些自定義對象來引入新特性,甚至可以從C代碼當中再調用Python的函數。都說時勢造英雄,也可以說是人工智慧和Python互相之間成就者對方,人工智慧演算法促進Python的發展,而Python也讓演算法更加簡單。

❺ 如何通過python獲取應用程序里列表的值

界面自動化是相當困難的,成本也高
測試還不如在代碼里多加點輔助代碼,測試的時候不依賴界面就方便了
另wpf的mvvm模式之所以受歡迎,原因之一就是因為對測試的友好,大多數情況下要相信binding的可靠性(因為這是由微軟保證)測試只需要驗證數據即可

❻ python必學英語單詞

computational adj. 計算的,電腦的

mode n. 模式

primitive n. 原始、基元,是後續操作的基礎

gigabyte n. 千兆位元組,是數據單位

storage n. 儲存體, 倉庫

retrieve n. 檢索,恢復

algorithm n. 演算法

accomplish vt. 完成

scheme n. 方案, 計劃, v. 設計, 體系, 結構,

compute vt. 計算

code n. 碼,密碼 vt. 把…編碼

halt v 停止

computation n. 計算,計算方法,計算結果

knowledge n. 知識,了解

declarative adj. 說明的, 陳述的 declarative knowledge 陳述性知識

imperative adj. 命令式的,互動的 imperative knowledge 互動性知識

recipe n. 掛起,暫停

evaluate vt. 評估,評價

square root 平方根 the square root of a number x x的平方根

dece vt. 演繹,推斷

capture vt. 採集,描繪,製作

fix vt. &vi.修理,安裝

calculator n. 計算器

decode v. 解碼, 譯解 [計算機] 解碼

enigma n. 謎

manipulate v. [計算機] 操作

instruction n. 指令,說明

set n.集合 predefined set 預設集合

arithmetic n. 算術,運算

store n. (在計算機里)存貯;記憶

test n.vt. 測試

execute vt. [計算機] 執行

source n. 來源 source code 源代碼

sequence n. 序列, 一系列, 順序

architecture n.體系結構

abstract n.簡化,抽象

computable adj. 可計算的

mechanism n. 機制

syntax n. 語法 (規范代碼的結構,成分和順序上正確)

02

static adj. 靜態的

ambiguous adj. 歧義的

unpredictable adj. 不可預知的

intend v. 打算 (打算使之成為。。。)

crash n 崩潰,停止運行

algorithmic adj.[計]演算法的,規則系統的

process n.過程,進程,步驟

programming language n.程序設計語言

checker n. 檢驗器, 檢查員

internal adj. 內部的

interpreter n. 解釋器

compiler n. [計算機]編譯器, 編譯程序

invert v. 使反向;invert a matrix反轉矩陣

abstraction n. 抽象, 參數化

converter n. 轉換器 =convertor

script n. 腳本

definition n. 清晰度

command n. [計算機]指令;命令

shell n.[計算機] DOS命令 ,殼

instruct [計算機] 指示

object n. 對象

type n.類型

scalar 標量(的)

represent vt. 代表

integer [計算機] 整數

int 整型

float n. 浮點型

const abbr. 常數(=constant)

expression 表達式

denote vt. 表示,意味著

sum n. 總數(計) vi. 總計

difference n. 差

proct n. 乘積

division n. 除法

quotient n. 商

remainder n. 余數,余

power n.次方,冪

operator n. 運算符

precedence n. 優先

truncate vt. 舍位

indicate v.說明,指示

decimal n.十進制

arbitrary adj. 任意的

variable adj. 可變的 n. 變數

value n. 值

assignment n. 賦值

bind vt. 綁定

invoke [計算機] 調用

binding n.綁定關系

rebound n. 回跳,反彈

diagram n. 圖解,關系圖

transcript n. 抄本,腳本

compound n. 混合物,復合詞

literal [計算機] 文字的,文本

quote n. 引用 quotes引號

character n. 字元

extract [計算機] 提取、取值、查看

index n.索引

boundary n. 分界線, 邊界boundaries 邊界

slice n. 薄的切片,一部份,鍋鏟 vt. 切成薄片,大幅降低

essentially adv. 基本上

❼ python的作用

萬能編程語言「Python」的五大主要用途:
1、web開發
Python的誕生歷史比ewb還要早,由於Python是一種解釋型的腳本語言,開發效率高,所有非常適合用來做web開發。
Python有上百種web開發框架,有很多成熟的模板技術,選擇Python開發web應用,不但開發效率高,而且運行速度快。
常見的web開發框架:Django、flask、tornado等。
2、網路爬蟲
網路爬蟲是Python比較常用的一個場景,國際上,Google在早期大量地使用Python語言作為網路爬蟲的基礎,帶動了整個Python語言的應用發展。以前國內很多人用採集器搜刮網上的內容,現在用Python收集網上信息比以前容易了許多。比如:從各大網站抓取商品折扣信息,比較獲取最優選擇;對社交網路上發言進行收集分類,生成情緒地圖,分析語言習慣……爬蟲應用很多,幾乎每個人學習爬蟲之後都能夠通過爬蟲去做一些好玩有趣且有用的事情。
3、人工智慧
人工智慧是現在非常火的一個方向,AI熱潮讓Python語言的未來充滿了無限的潛力。
因為Python有很多庫很方便做人工智慧,比如Numpy、Scipy做數值計算的,Sklearn做機器學習的,pybrain做神經網路的,matplotlib做數據可視化的。在人工智慧大范疇領域內的數據挖掘、機器學習、神經網路、深度學習等方面都是主流的編程語言,得到廣泛的支持和應用。
4、數據分析
數據分析處理方面,Python有很完備的生態環境。大數據分析中涉及到的分布式計算、數據可視化、資料庫操作等,Python中都有成熟的模塊可以選擇完成其功能。對於Hadoop-MapRece和Spark,都可以直接使用Python完成計算邏輯,這無論對於數據科學家還是對於數據工程師而言都是十分便利的。
5、自動化運維
Python對於伺服器運維而言也有十分重要的用途。由於目前幾乎所有Linux發行版本都自帶了Python解釋器,使用Python腳本進行批量化的文件部署和運行調整都成了Linux伺服器上很不錯的選擇。Python中也包含了許多方便的工具,從調控ssh/sftp用的paramiko,到監控服務用的supervisor,再到bazel等構建工具,甚至conan等用於C++的包管理工具,Python提供了全方位的工具集合,而在這基礎上,結合web,開發方便運維的工具會變得十分簡單。

❽ 學python用來干什麼

學python可從事的職業就很多。

python是一門語法優美的編程語言,不僅可以作為小工具使用提升我們日常工作效率,也可以單獨作為一項高新就業技能!所以學完Python編程之後,只要真的掌握了相關技術,想要找到好的工作還是比較容易的。

學完Python編程之後可以做的工作:

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。

祝你學有所成,望採納。

❾ 如何在python中使用xpath

在進行網頁抓取的時候,分析定位html節點是獲取抓取信息的關鍵,目前我用的是lxml模塊(用來分析XML文檔結構的,當然也能分析html結構), 利用其lxml.html的xpath對html進行分析,獲取抓取信息。
首先,我們需要安裝一個支持xpath的python庫。目前在libxml2的網站上被推薦的python binding是lxml,也有beautifulsoup,不嫌麻煩的話還可以自己用正則表達式去構建,本文以lxml為例講解。
假設有如下的HTML文檔:

1 <html>
2 <body>
3 <form>
4 <div id='leftmenu'>
5 <h3>text</h3>
6 <ul id=』china』><!-- first location -->
7 <li>...</li>
8 <li>...</li>
9 ......
10 </ul>
11 <ul id=』england』><!-- second location-->
12 <li>...</li>
13 <li>...</li>
14 ......
15 </ul>
16 </div>
17 </form>
18 </body>
19 </html>

直接使用lxml處理:
1 import codecs
2 from lxml import etree
3 f=codecs.open("ceshi.html","r","utf-8")
4 content=f.read()
5 f.close()
6 tree=etree.HTML(content)

etree提供了HTML這個解析函數,現在我們可以直接對HTML使用xpath了,是不是有點小激動,現在就嘗試下吧。

在使用xpath之前我們先來看看作為對照的jQuery和RE。
在jQuery里要處理這種東西就很簡單,特別是假如那個ul節點有id的話(比如是<ul id=』china』>):
$("#china").each(function(){...});

具體到此處是:
$("#leftmenu").children("h3:contains('text')").next("ul").each(function(){...});

找到id為leftmenu的節點,在其下找到一個內容包含為」text」的h3節點,再取其接下來的一個ul節點。
在python里要是用RE來處理就略麻煩一些:
block_pattern=re.compile(u"<h3>檔案</h3>(.*?)<h3>", re.I | re.S)
m=block_pattern.findall(content)
item_pattern=re.compile(u"<li>(.*?)</li>", re.I | re.S)
items=item_pattern.findall(m[0])
for i in items:
print i

那麼用xpath要怎麼做呢?其實跟jQuery是差不多的:
nodes=tree.xpath("/descendant::ul[@id='china']")

當然,現在沒有id的話也就只能用類似於jQuery的方法了。完整的xpath應該是這樣寫的(注意,原文件中的TAG有大小寫的情況,但是在XPATH里只能用小寫):
nodes=tree.xpath(u"/html/body/form/div[@id='leftmenu']/h3[text()='text']/following-sibling::ul[1]")

更簡單的方法就是像jQuery那樣直接根據id定位:
nodes=tree.xpath(u"//div[@id='leftmenu']/h3[text()='text']/following-sibling::ul[1]")

這兩種方法返回的結果中,nodes[0]就是那個「text」的h3節點後面緊跟的第一個ul節點,這樣就可以列出後面所有的ul節點內容了。
如果ul節點下面還有其他的節點,我們要找到更深節點的內容,如下的循環就是把這些節點的文本內容列出:
nodes=nodes[0].xpath("li/a")
for n in nodes:
print n.text

對比三種方法應該可以看出xpath和jQuery對於頁面的解析都是基於XML的語義進行,而RE則純粹是基於plain text。RE對付簡單的頁面是沒有問題,如果頁面結構復雜度較高的時候(比如一堆的DIV來回嵌套之類),設計一個恰當的RE pattern可能會遠比寫一個xpath要復雜。特別是目前主流的基於CSS的頁面設計方式,其中大部分關鍵節點都會有id――對於使用jQuery的頁面來說則更是如此,這時xpath相比RE就有了決定性的優勢。

附錄:基本XPATH語法介紹,詳細請參考XPath的官方文檔
XPATH基本上是用一種類似目錄樹的方法來描述在XML文檔中的路徑。比如用「/」來作為上下層級間的分隔。第一個「/」表示文檔的根節點(注意,不是指文檔最外層的tag節點,而是指文檔本身)。比如對於一個HTML文件來說,最外層的節點應該是」/html」。
同樣的,「..」和「.」分別被用來表示父節點和本節點。
XPATH返回的不一定就是唯一的節點,而是符合條件的所有節點。比如在HTML文檔里使用「/html/head/scrpt」就會把head里的所有script節點都取出來。
為了縮小定位范圍,往往還需要增加過濾條件。過濾的方法就是用「[」「]」把過濾條件加上。比如在HTML文檔里使用「/html/body/div[@id='main']」,即可取出body里id為main的div節點。
其中@id表示屬性id,類似的還可以使用如@name, @value, @href, @src, @class….
而 函數text()的意思則是取得節點包含的文本。比如:<div>hello<p>world</p>< /div>中,用」div[text()='hello']「即可取得這個div,而world則是p的text()。
函數position()的意思是取得節點的位置。比如「li[position()=2]」表示取得第二個li節點,它也可以被省略為「li[2]」。
不過要注意的是數字定位和過濾 條件的順序。比如「ul/li[5][@name='hello']」表示取ul下第五項li,並且其name必須是hello,否則返回空。而如果用 「ul/li[@name='hello'][5]」的意思就不同,它表示尋找ul下第五個name為」hello「的li節點。
此外,「*」可以代替所有的節點名,比如用」/html/body/*/span」可以取出body下第二級的所有span,而不管它上一級是div還是p或是其它什麼東東。
而 「descendant::」前綴可以指代任意多層的中間節點,它也可以被省略成一個「/」。比如在整個HTML文檔中查找id為「leftmenu」的 div,可以用「/descendant::div[@id='leftmenu']」,也可以簡單地使用「 //div[@id='leftmenu']」。
至於「following-sibling::」前綴就如其名所說,表示同一層的下一個節點。」following-sibling::*」就是任意下一個節點,而「following-sibling::ul」就是下一個ul節點。

閱讀全文

與pythonbinding相關的資料

熱點內容
壓縮因子定義 瀏覽:968
cd命令進不了c盤怎麼辦 瀏覽:214
葯業公司招程序員嗎 瀏覽:974
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:229
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328