Scrapy shell中没有hxs或xxs可用对象

2 投票
1 回答
1158 浏览
提问于 2025-04-18 16:46

首先,我在跟着这个教程:http://doc.scrapy.org/en/0.16/intro/tutorial.html

我运行了:

scrapy shell http://www.dmoz.org/Computers/Programming/Languages/Python/Books/

在教程中提到:“这个命令还会创建两个选择器,一个用于HTML(在hxs变量中),一个用于XML(在xxs变量中),都是基于这个响应的。所以我们来试试它们。”

但是,我的输出中并没有hxs或xxs这些可用的对象:

[s] Available Scrapy objects:
[s]   crawler    <scrapy.crawler.Crawler object at 0x03B33750>
[s]   item       {}
[s]   request    <GET http://tvtorrents.com/loggedin/show.do?id=3845>
[s]   response   <200 http://tvtorrents.com/login.do>
[s]   settings   <scrapy.settings.Settings object at 0x02718790>
[s]   spider     <Spider 'default' at 0x3e30190>
[s] Useful shortcuts:
[s]   shelp()           Shell help (print this help)
[s]   fetch(req_or_url) Fetch request (or URL) and update local objects
[s]   view(response)    View response in a browser

我期待看到:

[s]   hxs        <HtmlXPathSelector (http://www.dmoz.org/Computers/Programming/Languages/Python/Books/) xpath=None>
[s]   xxs        <XmlXPathSelector (http://www.dmoz.org/Computers/Programming/Languages/Python/Books/) xpath=None>

作为“可用对象”。

这让我无法像这样进一步处理输出:

In [1]: hxs.select('//title')
Out[1]: [<HtmlXPathSelector (title) xpath=//title>]

任何帮助都非常感谢!

1 个回答

2

这是一个版本问题:你正在使用的教程是为 Scrapy 0.16 写的,而你现在用的是更新版的 Scrapy。你可以通过这个链接查看最新的教程: http://doc.scrapy.org/en/latest/intro/tutorial.html

另外,顺便提一下,现在你应该使用 response.xpath() 这个方法:

$ scrapy shell http://stackoverflow.com
>>> response.xpath('//title')
[<Selector xpath='//title' data=u'<title>Stack Overflow</title>'>]
>>> response.xpath('//title').extract()
[u'<title>Stack Overflow</title>']
>>> response.xpath('//title/text()').extract()
[u'Stack Overflow']

撰写回答