.xpath().extract()
ve .css().extract()
dönüş listesi .xpath()
ve .css()
dönüş SelectorList
nesneler çünkü.
https://parsel.readthedocs.org/en/v1.0.1/usage.html#parsel.selector.SelectorList.extract
(SelectorList) .extract() Bkz:
Çağrı .extract() her elemanı için yöntem bu liste ve Unicode dizeleri listesi olarak, onların sonuçlar düzleştirilmiş dönün. Eğer sadece ilk eşleşen öğe elde etmek istiyorsanız
, sen seçici .extract_first()
çağırabilirsiniz:
.extract_first()
sen (kötü belgelenmiş olan)
http://doc.scrapy.org/en/latest/topics/selectors.html Alındığı aradığınız budur
>>> response.xpath('//div[@id="images"]/a/text()').extract_first()
u'Name: My image 1 '
0 Diğer örnekte
: döngü içinde
def parse(self, response):
for href in response.css("ul.directory.dir-col > li > a::attr('href')"):
link = href.extract()
print(link)
her href
bir Selector
nesne olacak.Üzerinde .extract()
çağrılması geri size tek bir Unicode dizesi alacak:
In [5]: for href in response.css("ul.directory.dir-col > li > a::attr('href')"):
...: print href
...:
<Selector xpath=u"descendant-or-self::ul[@class and contains(concat(' ', normalize-space(@class), ' '), ' directory ') and (@class and contains(concat(' ', normalize-space(@class), ' '), ' dir-col '))]/li/a/@href" data=u'/Computers/Programming/Languages/Python/'>
<Selector xpath=u"descendant-or-self::ul[@class and contains(concat(' ', normalize-space(@class), ' '), ' directory ') and (@class and contains(concat(' ', normalize-space(@class), ' '), ' dir-col '))]/li/a/@href" data=u'/Computers/Programming/Languages/Python/'>
(...)
<Selector xpath=u"descendant-or-self::ul[@class and contains(concat(' ', normalize-space(@class), ' '), ' directory ') and (@class and contains(concat(' ', normalize-space(@class), ' '), ' dir-col '))]/li/a/@href" data=u'/Computers/Programming/Languages/Python/'>
:
In [2]: type(response.css("ul.directory.dir-col > li > a::attr('href')"))
Out[2]: scrapy.selector.unified.SelectorList
o nesne üzerinde döngü size Selector
örneklerini verir:
böylece
.css()
response
üzerinde
$ scrapy shell "http://www.dmoz.org/Computers/Programming/Languages/Python/"
2016-02-26 12:11:36 [scrapy] INFO: Scrapy 1.0.5 started (bot: scrapybot)
(...)
In [1]: response.css("ul.directory.dir-col > li > a::attr('href')")
Out[1]:
[<Selector xpath=u"descendant-or-self::ul[@class and contains(concat(' ', normalize-space(@class), ' '), ' directory ') and (@class and contains(concat(' ', normalize-space(@class), ' '), ' dir-col '))]/li/a/@href" data=u'/Computers/Programming/Languages/Python/'>,
<Selector xpath=u"descendant-or-self::ul[@class and contains(concat(' ', normalize-space(@class), ' '), ' directory ') and (@class and contains(concat(' ', normalize-space(@class), ' '), ' dir-col '))]/li/a/@href" data=u'/Computers/Programming/Languages/Python/'>,
...
<Selector xpath=u"descendant-or-self::ul[@class and contains(concat(' ', normalize-space(@class), ' '), ' directory ') and (@class and contains(concat(' ', normalize-space(@class), ' '), ' dir-col '))]/li/a/@href" data=u'/Computers/Programming/Languages/Python/'>]
bir SelectorList
döndürür
.extract()
'u arayarak size tek bir Unicode str verir. ing:
In [6]: for href in response.css("ul.directory.dir-col > li > a::attr('href')"):
print type(href.extract())
...:
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
<type 'unicode'>
Not: .extract()
Selector
üzerine dizeleri listesini dönen olarak wrongly documented olduğunu. parsel
(Scrapy seçicileri ile aynıdır ve scrapy 1.1+ sürümünde kullanılan kaputun altında kullanılır) ile ilgili bir sorun açacağım
Hızlı cevap için teşekkürler! Sadece yazıyı düzenledim ve öğreticiden 'extract()' bir dizge verdiğini ekledim. Bu css kullanıyorum çünkü mi? – entron
Doğru, yazdığım şey doğru değil (bir cevap çok hızlı). Aslında .xpath(). Extract() 've' .css(). Extract() 'döndürme listeleri çünkü' .xpath() 've' .css() '' SelectorList' nesnelerini döndürür. Ama .xpath() 'da döngü yaparak, size“ .extract() ”diyebilmeniz ve tek bir eleman almanız için bir“ Selector ”vermeniz gerekir. Cevabımı düzeltirim –
Bu bölüm gerçekten kafa karıştırıcı, ama şimdi anlıyorum! Çok teşekkür ederim! – entron