Scrapy shell中没有hxs或xxs可用对象
首先,我在跟着这个教程: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']