才發現又多了一些東西。
寫個筆記記錄一下..
以下繼續
1.在chomre開發者模式 的consle底下,
輸入$x(‘//h1’),可以測試xpath的語法
使用* 可選擇指定層級的所有元素
$x(‘//div/*’)
2.xpath的函示
contains $x('//a[contains(@href, "iana")]')
contains(text(),'ABC')
start-with $x('//a[starts-with(@href, "http://www.")]')
not $x('//a[not(contains(@href, "abc"))]')
3.範例
取得class屬性以reflist開頭的div中所有的超連結
//div[starts-with(@class,"reflist")]//a/@href
取得class為infobox的表格中第一張圖的url
//table[@class="infobox"]//img[1]/@src
取得每張圖片的url
//img/@src
4.scrapy shell url
接url的時候最好用雙引號包起來
scrapy shell “https://www.taaze.tw/rwd_searchResult.html?keyType%5B%5D=0&keyword%5B%5D=%E5%A6%96%E6%80%AA”
5.取得元素屬性的值
使用 ::attr(屬性) 取值
response.css('div.info_frame>h4.titleMain::attr(title)')
6.要得真實的原文數據,需要使用extract()的函數
response.css('div.info_frame>h4.titleMain::attr(title)').extract()
7.要直接顯示可用
self.log("booksName:%s" % learn_node.css('h4.titleMain::attr(title)').extract())
接看,要注意,是%不是 ,
8.起始連結有很多組的話,覆寫start_request函數
def start_requests(self):
source_url = "https://www.taaze.tw/rwd_searchResult.html?keyType%5B%5D=0&keyword%5B%5D="
keywords=['妖怪公寓的優雅日常','四葉妹妹']
for keyword in keywords:
self.log("urlencode::: " + urlparse.quote(keyword))
start_url = source_url + urlparse.quote(keyword)
yield scrapy.Request(start_url)
如需看完整的程式碼,請至 Github
e.g.
XPath、XQuery 以及 XSLT 函數
選擇器(Selectors)
0 意見:
張貼留言