Scrapy Selector有select()方法吗?

时间:2015-05-28 16:24:16

标签: python web-scraping scrapy scrapy-spider

在运行最新版本的Scrapy并使用HtmlXPathSelector进行Xpath提取时,我会从日志中注意到HtmlXPathSelector已被弃用。

因此,在将所需节点(让我们称之为$ myNode)更改为Selector实例而不是HtmlXPathSelector实例后,我希望$ myNode.select()会给出错误,因为,根据the API,Selector类只有xpath()方法,而不是select()方法。

然而select()方法继续发挥作用。实际上,如果我在Selector实例上执行dir(),那么select()就是这个类的方法。

这是API文档中的遗漏吗?或者有意省略让用户明确使用xpath()css(),具体取决于他们的查询类型?

1 个答案:

答案 0 :(得分:1)

Read the source, Luke!

每当您不确定时,请查看source codeselect()被标记为“已弃用”,应使用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")

相关问题: