18. Scrapy 數(shù)據(jù)的提取
從網(wǎng)頁(yè)中提取數(shù)據(jù),Scrapy 使用基于 XPath 和 CSS 表達(dá)式的技術(shù)叫做選擇器。以下是 XPath 表達(dá)式的一些例子:
這將選擇 HTML 文檔中的
<head>
元素中的<title>
元素
/html/head/title
這將選擇
<title>
元素中的文本
/html/head/title/text()
這將選擇所有的
<td>
元素
//td
選擇 div 包含一個(gè)屬性 class=”slice” 的所有元素
//div[@class=”slice”]
選擇器有四個(gè)基本的方法,如下所示:
S.N.方法 & 描述extract()它返回一個(gè)unicode字符串以及所選數(shù)據(jù)extract_first()它返回第一個(gè)unicode字符串以及所選數(shù)據(jù)re()它返回Unicode字符串列表,當(dāng)正則表達(dá)式被賦予作為參數(shù)時(shí)提取xpath()它返回選擇器列表,它代表由指定XPath表達(dá)式參數(shù)選擇的節(jié)點(diǎn)css()它返回選擇器列表,它代表由指定CSS表達(dá)式作為參數(shù)所選擇的節(jié)點(diǎn)
2 Scrapy Shell
如果使用選擇器想快速的到到效果,我們可以使用Scrapy Shell
scrapy shell "http://www.163.com"
注意windows系統(tǒng)必須使用雙引號(hào)
2.1 舉例
代碼的下面行顯示了不同類型的數(shù)據(jù)的提?。?/p>
選擇 li 標(biāo)簽內(nèi)的數(shù)據(jù):
response.xpath('//ul/li')
對(duì)于選擇描述:
response.xpath('//ul/li/text()').extract()
對(duì)于選擇網(wǎng)站標(biāo)題:
response.xpath('//ul/li/a/text()').extract()
對(duì)于選擇網(wǎng)站的鏈接:
response.xpath('//ul/li/a/@href').extract()