使用xpaths¶下面是一些提示,可以帮助您有效地将xpath与scrapy选择器结合使用。如果您还不太熟悉xpath,可以先看看这个 XPath tutorial . 注解 其中一些技巧是基于 this post from Zyte's blog 。 使用相对路径¶请记住,如果要嵌套选择器并使用以开头的xpath 例如,假设您希望提取所有 >>> divs = response.xpath('//div')
首先,您可能会尝试使用以下方法,这是错误的,因为它实际上提取了所有 >>> for p in divs.xpath('//p'): # this is wrong - gets all <p> from the whole document
... print(p.get())
这是正确的方法(注意在 >>> for p in divs.xpath('.//p'): # extracts all <p> inside
... print(p.get())
另一个常见的情况是提取所有直接 >>> for p in divs.xpath('p'):
... print(p.get())
有关相对路径的更多详细信息,请参见 Location Paths XPath规范中的节。 按类查询时,请考虑使用CSS¶因为一个元素可以包含多个CSS类,所以按类选择元素的xpath方法相当冗长: *[contains(concat(' ', normalize-space(@class), ' '), ' someclass ')]
如果你使用 事实证明,剪贴选择器允许您链接选择器,因此大多数时候,您都可以使用CSS按类选择,然后在需要时切换到XPath: >>> from scrapy import Selector
>>> sel = Selector(text='<div class="hero shout"><time datetime="2014-07-23 19:00">Special date</time></div>')
>>> sel.css('.shout').xpath('./time/@datetime').getall()
['2014-07-23 19:00']
这比使用上面显示的详细的xpath技巧要干净。只要记住使用 |
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2024-12-4 15:56 , Processed in 0.015878 second(s), 17 queries .