在运行最新版本的Scrapy并使用HtmlXPathSelector
进行Xpath提取时,我会从日志中注意到HtmlXPathSelector
已被弃用。
因此,在将所需节点(让我们称之为$ myNode)更改为Selector实例而不是HtmlXPathSelector
实例后,我希望$ myNode.select()会给出错误,因为,根据the API,Selector类只有xpath()
方法,而不是select()
方法。
然而select()
方法继续发挥作用。实际上,如果我在Selector实例上执行dir()
,那么select()
就是这个类的方法。
这是API文档中的遗漏吗?或者有意省略让用户明确使用xpath()
或css()
,具体取决于他们的查询类型?
答案 0 :(得分:1)
每当您不确定时,请查看source code。 select()
被标记为“已弃用”,应使用xpath()
代替:
@deprecated(use_instead='.xpath()')
def select(self, xpath):
return self.xpath(xpath)
这样做是为了更顺利地过渡到较新的Scrapy版本。
请注意,从0.24.0
开始,Scrapy spider回调中的response
变量具有Selector
的方法快捷键:
def parse(self, response):
response.xpath("//title/text()")
response.css("div.content")
相关问题: