Q: Scrapy如何利用XPath方法取得單一元素值?
//a[@class='js-auto_break_title']
意思就像是根目錄下的<a>標籤,並且利用「[@class='']」來指定它的樣式類別(class),如此就能夠定位到文章標題的<a>標籤。
接下來,在spiders / inside.py的parse()方法(Method)中,將網頁回應的結果(response),改為呼叫xpath()方法(Method),並且,貼上剛剛所得知的XPath路徑,如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
title = response.xpath("//a[@class='js-auto_break_title']/text()").get()
print(title)
接著,利用以下指令執行inside網頁爬蟲:
$ scrapy crawl inside
以上範例,利用XPath路徑定位到所要爬取的<a>標籤後,由於要取得其中的網頁內容文字,所以在XPath路徑的最後需加上「/text()」關鍵字,並且,呼叫get()方法(Method)取得單一元素值。
Q: Scrapy如何利用XPath方法取得多個元素值?
如果想要利用Scrapy xpath()方法(Method)取得多個元素值,使用XPath路徑定位到所要爬取的網頁元素<a>標籤後,呼叫getall()方法(Method)即可,如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
titles = response.xpath("//a[@class='js-auto_break_title']/text()").getall()
print(titles)
從執行結果可以看到,getall()方法(Method)會回傳一個串列(List),包含所有樣式類別(class)為「js-auto_break_title」的<a>標籤標題文字,接下來,就需要透過迴圈來進行讀取,如下範例:
import scrapy
class InsideSpider(scrapy.Spider):
name = 'inside'
allowed_domains = ['www.inside.com.tw']
def parse(self, response):
titles = response.xpath("//a[@class='js-auto_break_title']/text()").getall()
for title in titles:
print(title)
)網站觀看更多精彩內容。