在运行最新版本的Scrapy并使用HtmlXPathSelector进行Xpath提取时,我从日志中注意到,不推荐使用HtmlXPathSelector。
因此,在将所需的节点(我们称之为$myNode)更改为Selector实例而不是HtmlXPathSelector实例之后,我希望$myNode.select()会产生一个错误,因为根据API,Selector类只有一个xpath()方法,而不是select()方法。
然而,select()方法继续发挥作用。实际上,如果我对Selector实例执行一个dir(),那么select()就是这个类的一个方法。
这是API文档中的遗漏吗?还是故意忽略了让用户根据查询类型显式使用xpath()或css()?
发布于 2015-05-28 16:28:16
当您不确定时,请查看源代码。select()标记为“弃用”,应该使用xpath():
@deprecated(use_instead='.xpath()')
def select(self, xpath):
return self.xpath(xpath)这是为了更顺利地过渡到新的Scrapy版本而故意这样做的。
注意,从0.24.0开始,Scrapy回调中可用的response变量有Selector的方法快捷方式:
def parse(self, response):
response.xpath("//title/text()")
response.css("div.content")相关问题:
https://stackoverflow.com/questions/30512126
复制相似问题