最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Scrapy元素選擇器Xpath用法匯總

 更新時間:2021年03月23日 11:24:09   作者:思維之上  
這篇文章主要介紹了Scrapy元素選擇器Xpath用法匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

 眾所周知,在設計爬蟲時,最麻煩的一步就是對網頁元素進行分析,目前流行的網頁元素獲取的工具有BeautifulSoup,lxml等,而據(jù)我使用的體驗而言,Scrapy的元素選擇器Xpath(結合正則表達式)是其中較為出色的一種(個人認為最好啦,當然只能在Scrapy中使用)功能相對較全、使用較為方便,正因為它的豐富性,有時很多功能會忘記,所以在這里整理好記錄下來,方便今后查閱使用。

1. 元素的多級定位與跳級定位

多級定位:依靠html中的多級元素逐步縮小范圍

response.xpath('//table/tbody/tr/td')

//如果知道元素所屬的下標可以用下標選擇
response.xpath('//table/tbody/tr[1]/td')

跳級定位:符號“//”表示跳級定位,即對當前元素的所有層數(shù)的子元素(不僅是第一層子元素)進行查找,一般xpath的開頭都是跳級定位

response.xpath('//span//table')

2. 依靠元素的屬性定位

每個html元素都有很多屬性,如id、class、title、href、text(href和text往往可以配合正則表達式)等,這些屬性往往具有很強的特殊性,結合元素多級定位或跳級定位會更準確高效,下面舉幾個典型的例子,其他的舉一反三

利用class定位

response.xpath('//td[@class="mc_content"]')

利用href配合正則表達式定位

response.xpath('//a[re:test(@href,"^\/index\.php\?m=News&a=details&id=1&NewsId=\d{1,4}")]')

利用text結合正則表達式定位

a=response.xpath('//a[re:test(text(),"\w{4}")]')

此外,xpath還有對于html元素操作的兩個實用的函數(shù)(可以用正則表達式代替)——starts-with和contains;

a=response.xpath('//a[starts-with(@title,"注冊時間")]')

a=response.xpath('//a[contains(text(),"聞")]')

3. 提取元素或元素的屬性值

首先是最基本的extract()函數(shù),提取被定為的元素對象

a=response.xpath('//a[contains(text(),"聞")]').extract()

//如果被定為的元素對象有多個,可以有用下標指定
a=response.xpath('//a[contains(text(),"聞")]').extract()[1]

提取元素的屬性

//提取text
a=response.xpath('//a[contains(text(),"聞")]/text()').extract()

//獲取href
a=response.xpath('//a[contains(text(),"聞")]/@href').extract()

//獲取name
a=response.xpath('//a[contains(text(),"聞")]/@name').extract()

此時我們的正則表達式又閑不住了(scrapy自帶的函數(shù)),可以對提取的元素進行選擇

//對href中的部分字符串進行選擇
response.xpath('//a[@name="_l_p_n"]/@href').re('\/s.*?list\.htm')

在這里關于xpath的所有用法基本總結完畢,只是由于xpath是對靜態(tài)元素進行匹配選擇,對于javascript往往束手無策,這時不得不用一個自動化測試工具——selenium,可以實現(xiàn)各種動態(tài)事件和靜態(tài)元素的選擇,只是selenium往往比較吃內存,響應時間也比較慢,對于大型的爬蟲任務盡量不要使用,畢竟有一些javascript元素是內嵌在網頁代碼中的,這時候結合萬能的正則表達式,xpath往往能夠實現(xiàn)。如下:

link = re.search("javascript:goToPage\('(.*?)'", value) //value為包含該段的字符串

到此這篇關于Scrapy元素選擇器Xpath用法匯總的文章就介紹到這了,更多相關Scrapy元素選擇器Xpath 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python連接MySQL數(shù)據(jù)庫實例分析

    python連接MySQL數(shù)據(jù)庫實例分析

    這篇文章主要介紹了python連接MySQL數(shù)據(jù)庫,實例分析了Python操作MySQL的相關技巧,需要的朋友可以參考下
    2015-05-05
  • python assert斷言的實例用法

    python assert斷言的實例用法

    在本篇文章里小編給大家整理了一篇關于python assert斷言的實例用法,有需要的朋友們可以跟著學習參考下。
    2021-09-09
  • Python使用matplotlib實現(xiàn)在坐標系中畫一個矩形的方法

    Python使用matplotlib實現(xiàn)在坐標系中畫一個矩形的方法

    這篇文章主要介紹了Python使用matplotlib實現(xiàn)在坐標系中畫一個矩形的方法,涉及matplotlib模塊繪制圖形的相關技巧,需要的朋友可以參考下
    2015-05-05
  • Django框架靜態(tài)文件使用/中間件/禁用ip功能實例詳解

    Django框架靜態(tài)文件使用/中間件/禁用ip功能實例詳解

    這篇文章主要介紹了Django框架靜態(tài)文件使用/中間件/禁用ip功能,結合實例形式詳細分析了Django框架靜態(tài)文件的使用、中間件的原理、操作方法以及禁用ip功能相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • PyTorch實現(xiàn)線性回歸詳細過程

    PyTorch實現(xiàn)線性回歸詳細過程

    本文介紹PyTorch實現(xiàn)線性回歸,線性關系是一種非常簡單的變量之間的關系,因變量和自變量在線性關系的情況下,可以使用線性回歸算法對一個或多個因變量和自變量間的線性關系進行建模,該模型的系數(shù)可以用最小二乘法進行求解,需要的朋友可以參考一下
    2022-03-03
  • Python利用遞歸實現(xiàn)文件的復制方法

    Python利用遞歸實現(xiàn)文件的復制方法

    今天小編就為大家分享一篇Python利用遞歸實現(xiàn)文件的復制方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化

    pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化

    這篇文章主要介紹了pygame實現(xiàn)井字棋之第三步邏輯優(yōu)化,文中有非常詳細的代碼示例,對正在學習python的小伙伴們也有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • 淺談如何使用python抓取網頁中的動態(tài)數(shù)據(jù)實現(xiàn)

    淺談如何使用python抓取網頁中的動態(tài)數(shù)據(jù)實現(xiàn)

    這篇文章主要介紹了淺談如何使用python抓取網頁中的動態(tài)數(shù)據(jù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • python如何操作mysql

    python如何操作mysql

    這篇文章主要介紹了python如何操作MySQL,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-08-08
  • 使用numpy.eye創(chuàng)建one-hot編碼的實現(xiàn)

    使用numpy.eye創(chuàng)建one-hot編碼的實現(xiàn)

    本文主要介紹了使用numpy.eye創(chuàng)建one-hot編碼的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08

最新評論

汤阴县| 保德县| 岚皋县| 阿鲁科尔沁旗| 怀来县| 枞阳县| 内丘县| 江达县| 昆山市| 蚌埠市| 遂宁市| 安宁市| 平遥县| 云霄县| 旅游| 昌宁县| 报价| 凤城市| 桐庐县| 清原| 永定县| 萝北县| 土默特右旗| 房产| 交口县| 浦县| 二连浩特市| 高安市| 石阡县| 定兴县| 鄂托克旗| 林芝县| 巴林左旗| 乌鲁木齐市| 盐城市| 错那县| 海宁市| 阿坝县| 洞头县| 吉首市| 微山县|