scrapy使用用Xpath提取深層標籤

2021-08-20 19:24:59 字數 758 閱讀 7344

在使用scrapy框架做爬蟲時,有兩種方式對標籤內容進行提取:css和xpath。基本的標籤內容,屬性提取都很容易。但對於多層巢狀的標籤,如何提取到最裡層的內容呢?

舉個栗子:

網頁html內容是

"id='test'>helloworld!b>

p>"

如何一下子提取到hello world!呢?

用css的話需要寫兩次選擇:

response.css('#test::text').extract_first()

response.css('#test b::text').extract_first()

這個簡單的例子還似乎可以這樣做,但是實際專案中可沒這麼簡單,往往是整篇文章都是巢狀的段落,文字,外面是p便簽,裡面是多層span標籤,而且個數還不一致,根本無法乙個個寫。。。

因此,需要一種一次性提取最裡層內容的方法!

用xpath可以做到

response.xpath("string(//p[@id='test'])").extract()

# 或者

response.xpath("//p[@id='test']").xpath('string(.)').extract()

# 輸出:['helloworld!']

至於xpath的用法,可以參考這篇文章的總結:

參考文章:

scrapy應用xpath語法

如 等等各種型別xpath語法可以用分號做分隔符來區分標籤 但是最需要注意的是標籤的屬性值和標籤下的內容 以及這個部分 下面將對這兩個部分書寫xpath div a text get 首先鎖定要查詢的父標籤 text response.xpath div id search nature rg ul...

Scrapy下xpath基本的使用方法

scrapy是基於python的開源爬蟲框架,使用起來也比較方便。具體的官網檔 之前以為了解python就可以直接爬 了,原來還要了解html,xml的基本協議,在了解基礎以後,在了解下xpath的基礎上,再使用正規表示式 python下的re包提供支援 提取一定格式的資訊 比如說url 就比較容易...

scrapy中使用正確的xpath出現空列表問題

今天在使用scrapy框架爬取網頁時,使用正確的xpath來爬取時,爬取的缺失空列表,如下 coding utf 8 import scrapy class haodfspider scrapy.spider name haodf start urls def parse self,response...