91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Xpath元素選擇器怎么在Scrapy中使用

發布時間:2021-03-23 14:49:00 來源:億速云 閱讀:182 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關Xpath元素選擇器怎么在Scrapy中使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

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

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

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

跳級定位:符號“//”表示跳級定位,即對當前元素的所有層數的子元素(不僅是第一層子元素)進行查找,一般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元素操作的兩個實用的函數(可以用正則表達式代替)——starts-with和contains;

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

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

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

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

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自帶的函數),可以對提取的元素進行選擇

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

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

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

上述就是小編為大家分享的Xpath元素選擇器怎么在Scrapy中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐至县| 孟村| 博爱县| 盘锦市| 定陶县| 新营市| 新竹市| 南宁市| 新邵县| 淮北市| 布尔津县| 嘉禾县| 高平市| 县级市| 枝江市| 谢通门县| 南昌县| 天水市| 双辽市| 溆浦县| 曲松县| 彰化市| 通辽市| 孙吴县| 延吉市| 尤溪县| 淮安市| 扎鲁特旗| 济南市| 正镶白旗| 通化市| 柯坪县| 满洲里市| 鹿泉市| 兰州市| 博客| 监利县| 响水县| 福海县| 枣阳市| 越西县|