xpath
css選擇器
從頁面中提取資料的核心技術是http文字解析,在python中常用beautiful和lxml模組處理此類問題。scrapy綜合上述兩者優點實現了selector類,它是基於lxml庫構建的。selector類的實現位於scrapy.selector
模組。
selector的使用:
建立物件
建立selector物件時,有兩種方法,一是可將頁面的html文件字串傳遞給selector構造方法的text引數,,例如:
selector = selector(text=text)
二是使用乙個response物件構造selector物件,將其傳遞給selector構造器方法的response引數,例如:
response = htmlrespone(url='',body=body,encoding='utf-8')
selector = selector(response=response)
選中資料
呼叫selector物件的xpath方法或css方法會返回selectorlist物件,selectorlist支援列表介面,可用for語句迭代訪問其中的每乙個selector物件。
selector_list = selector.xpath('//h1')
for sel in selector_list:
print(sel.xpath('./text()'))
提取資料
呼叫selector或者selectorlist物件的以下方法可將選中的內容提取:
在實際開發中,我們直接使用response物件內建的selector物件。response物件還提供了xpath和css方法,它們在內部分別呼叫內建selector物件的xpath和css方法,可使用快捷方式。
response.xpath('.//h1/text()').extract()
response.css('li::text').extract()
xpath即xml路徑語言,它是一種用來確定xml文件中某部分位置的語言。
xml文件的節點有多種型別,最常用的如下:
節點間的關係:
基礎語法
表示式描述
/選中文件的根
.選中當前節點
…選中當前節點的父節點
element
選中子節點中所有element元素節點
//element
選中h後代節點中所有element元素節點
*選中所有元素子節點
text()
選中所有文字子節點
@attr
選中名為attr的屬性節點
@*選中所有屬性節點
[謂語]
謂語用來查詢某個特定的節點或者包含某個特定值的節點
常用函式
css即層疊樣式表,其 選擇器是一種用來確定html文件中某部分位置的語言。
基本語法
表示式描述
*選中所有元素
e選中e元素
e1,e2
選中e1和e2元素
e1 e2
選中e1後代元素中的e2元素
e1>e2
選中e1子元素中的e2元素
e1+e2
選中e1兄弟元素中的e2元素
.class
選中class屬性包含class的元素
#id選中id屬性為id的元素
[attr]
選中包含attr屬性的元素
[attr=value]
選中包含attr屬性且值為value的元素
[attr~=value]
選中包含attr屬性且值包含value的元素
e:nth-child(n)(e:nth-last-child(n))
選中e元素,且該元素必須是其父元素的(倒數)第n個子元素
e:first-child(e:last-child)
選中e元素,且該元素必須是其父元素的(倒數)第乙個子元素
e:empty
選中沒有子元素的e元素
e::text
選中e元素的文字節點(text node)
unix 網路程式設計 第三章
包裹函式 就是對有錯誤返回值的函式的封裝。在unix網路程式設計中用大寫表示。err sys 必須要errno 的值才能輸出錯誤?執行緒函式遇到錯誤的時候 不設定errno的值,而是把error的值作為函式的返回值。必須檢查某個確定的錯誤,並處理它,而不是終止程序執行。unix errno 值 每當...
第三章 堆疊
1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...
第三章 曙光
第三章 曙光 第二場校園招聘開始了。其實,洋對這個公司的不是很了解。因為前幾天突然在bbs上面看到了這個公司的招聘資訊,洋覺得這個公司不錯,就上網投了簡歷。接下來的乙個多小時,讓洋很震撼!想不到這個公司這個厲害,而且無論從哪方面來說,絕對不比之前的那個公司差。想不到自己的乙個不經意的決定到了這個大的...